| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 686 人关注过本帖
标题:月老使命问题,求解释
只看楼主 加入收藏
孤寂的小菜
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2013-4-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
月老使命问题,求解释
Description

cxlove曾经客串过月老(呵呵~~~只不过是给数字配对)。
两个整数拼接成一个新数字之后,如果是3的倍数,则我们定义为幸福配对。
现在有n个数字,月老的任务就是将其配对。
现在请你帮助月老计算出最多能够有多少个幸福配对。
例如:123和456可以拼接成123456,也可以组成456123。
注意:每个数字只能用一次

Input

一个整数 T,表示有 T 组测试数据。(1<=T<=40)
每组数据输入格式如下:
对于每一组数据,输入如下:
一个整数n (1<=n<=10000)
接下来一行,n个整数 a1,a2,a3……an (1<=ai<=1000000000)

Output

对于每一组数据,输出一个整数,表示最多配成多少对

Sample Input


2
3
1 2 3
4
1 1 4 4

Sample Output


1
0
我的代码如下:
#include <stdio.h>
#define min(x, y) (x < y ? x : y)
void main()
{
    int cases;
    scanf("%d", &cases);
    while(cases--)
    {
        int n,i;
        scanf("%d", &n);

        int rem0, rem1, rem2;
        rem0 = rem1 = rem2 = 0;
        for (i = 0; i < n; ++i)
        {
             int a1;
             scanf("%d", &a1);
             if(a1 % 3 == 0)
                 ++rem0;
             if(a1 % 3 == 1)
                 ++rem1;
             if(a1 % 3 == 2)
                 ++rem2;
         }
         printf("%d\n", rem0 / 2 + min(rem0, rem1));
     }
}
运行结果为Wrong Answer,求解释

[ 本帖最后由 孤寂的小菜 于 2013-4-30 19:32 编辑 ]
搜索更多相关主题的帖子: 月老 数字 
2013-04-30 17:56
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:5 
printf("%d\n",rem0*(rem0-1)/2+rem1*rem2);
2013-04-30 18:05
孤寂的小菜
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2013-4-30
收藏
得分:0 
大哥,怎么连给的测试数据结果都不对了
2013-04-30 18:11
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:5 
#include <stdio.h>
#define min(x, y) (x < y ? x : y)

int answer(int n)
{
    if(n == 1) return 1;
    else return n*answer(n - 1);
}

void main()
{
    int cases;
    scanf("%d", &cases);
    while(cases--)
    {
        int n,i;
        scanf("%d", &n);

        int rem0, rem1, rem2;
        rem0 = rem1 = rem2 = 0;
        for (i = 0; i < n; ++i)
        {
             int a1;
             scanf("%d", &a1);
             if(a1 % 3 == 0)
                 ++rem0;
             if(a1 % 3 == 1)
                 ++rem1;
             if(a1 % 3 == 2)
                 ++rem2;
        }
        if(rem0 > 1)
        printf("%d\n" , min(rem1 , rem2) + answer(rem0));
        else printf("%d\n" , min(rem1 ,rem2));
     }
}

练就一身本领,只为笑傲江湖!
2013-04-30 19:40
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:5 
2楼正确
2013-04-30 19:49
孤寂的小菜
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2013-4-30
收藏
得分:0 
回复 5楼 helloUJS
没看懂哎,帮忙解释下好吗,谢谢了!
2013-04-30 21:25
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:0 
a1,a2,a3,....ak是能被3整除的数
a1,a2,a3,....am是除3整余1的数
a1,a2,a3,....an是除3整余2的数
a1,a2,a3,....ak中任何两个数能组成两个幸福数aiaj和ajai,k中取2共有k(k-1)/2种取法
a1,a2,a3,....am中任何一个和a1,a2,a3,....an中的任何一个可以组成两个幸福数aiaj和ajai,其中ai是除3余1的数,aj是除3余2的数,共有m*n*2中
共计:k*(k-1)+2*m*n种

[ 本帖最后由 helloUJS 于 2013-5-1 17:51 编辑 ]
2013-04-30 21:55
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
程序代码:
#include <stdio.h>

int main()
{
    int m, n, a[3];
    long tmp;

    scanf("%d", &n);
    while (n--)
    {
        scanf("%d", &m);
        a[0] = a[1] = a[2] = 0;
        while (m--)
        {
            scanf("%ld", &tmp);
            a[tmp % 3]++;
        }
        printf("%d\n",
            a[0] * (a[0]-1) / 2 + a[1] * a[2]);
    }
    return 0;
}


[fly]存在即是合理[/fly]
2013-05-01 16:27
孤寂的小菜
Rank: 2
等 级:论坛游民
帖 子:26
专家分:45
注 册:2013-4-30
收藏
得分:0 
哥哥们,一个数字只能用一次啊
2013-05-01 18:53
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
不对,额

[ 本帖最后由 azzbcc 于 2013-5-1 21:25 编辑 ]


[fly]存在即是合理[/fly]
2013-05-01 21:23
快速回复:月老使命问题,求解释
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018032 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved