首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

CF 342A Xenia and Divisors (数学法令)

2013-09-08 
CF342AXenia and Divisors (数学规律)转载请注明出处:http://blog.csdn.net/a1dark分析:这题是一个数学规

CF 342A Xenia and Divisors (数学规律)

转载请注明出处:http://blog.csdn.net/a1dark

分析:这题是一个数学规律的题、由于题目说了给出的数据都不大于7、又要满足a,b,c能够相互整除的情况、所以经推导只有3种情况:

1  2  4

1  2  6

1  3  6

于是规律就出来了、我们只需要判断1的个数、2的个数、3的个数、4的个数、6的个数能不能满足这种规律、就可以了、其中3和4是独立的、所以可以用1的个数减去3和4的个数、剩下第二组1的个数、2和6是同样的道理、最后只剩下1、2、6的个数、看相不相等并且必须要大于等于0才行、

#include<stdio.h>#include<string.h>int dp[10];int map[10];int main(){    int n,x,i;    while(scanf("%d",&n)!=EOF){        memset(dp,0,sizeof(dp));        memset(map,0,sizeof(map));        for(int i=0;i<n;i++){            scanf("%d",&x);            dp[x]++;        }        for(int j=1;j<=6;j++)            map[j]=dp[j];        dp[1]=dp[1]-dp[3];        dp[1]=dp[1]-dp[4];        dp[2]=dp[2]-dp[4];        dp[6]=dp[6]-dp[3];        if(dp[1]>=0&&dp[2]>=0&&dp[6]>=0&&dp[1]==dp[2]&&dp[1]==dp[6]&&(n==(map[1]+map[2]+map[3]+map[4]+map[6]))){            for(i=1;i<=dp[4];i++){                printf("1 2 4\n");            }            for(i=1;i<=dp[6];i++)                printf("1 2 6\n");            for(i=1;i<=dp[3];i++)                printf("1 3 6\n");        }        else {            printf("-1\n");        }    }    return 0;}


热点排行