acm编程题(c语言,一道),自己运行没错,但AC不了,老是Wrong Anwser,请大牛帮忙。题目如下:
时间限制:500MS内存限制:65536K题型:编程题语言:无限制描述相传汉高祖刘邦问大将军韩信统御兵士多少,韩信答说,每3人一列余1人、5人一列余2人、7人一列余4人、...
时间限制:500MS 内存限制:65536K
题型: 编程题 语言: 无限制
描述
相传汉高祖刘邦问大将军韩信统御兵士多少,韩信答说,每3人一列余1人、5人一列余2人、7人一列余4人、13人一列余6人、17人一列余2人、19人一列余10人、23人一列余1人、29人一列余11人。
刘邦茫然而不知其数。你呢? 你是一位优秀的程序员,请你帮刘邦解决这一问题。
输入格式
要求由键盘输入A,B,C,D,E,F,G,H,a,b,c,d,e,f,g,h十六个数,分别代表每A人一列余a、每B人一列余b、每C人一列余c、每D人一列余D、每E人一列余e、每F人一列余f、每G人一列余g、每H人一列余h,其中A,B,C,D,E,F,G,H为互不相等的质数
输出格式
输出总兵士数,要求输出满足条件的最小的一个,但要满足8种排法的每一种排法至少可排一列。(保证给的数据,有结果且计算的结果不会超过2的63次方)
输入样例
2 3 5 7 11 13 17 19
1 1 1 1 1 1 1 1
输出样例
9699691
我的代码:
#include<stdio.h>
//#include<time.h>
#define N 8
int max(int *zhi)
{
int max=0;
int i;
for(i=0;i<N;i++)
if(zhi[i]>max) max=zhi[i];
return max;
}
int main()
{
//printf("%d",clock());
unsigned __int64 total=1,q,out=0,p;
int i,zhi[N],yu[N],a,b;
for(i=0;i<N;i++)
{
scanf("%d",&zhi[i]);
//printf("%u ",zhi[i]);
total*=zhi[i];
}
for(i=0;i<N;i++)
{
scanf("%d",&yu[i]);
//printf("%u ",yu[i]);
}
for(i=0;i<N;i++)
{
a=1;
while(1)
{
q=total/zhi[i];
b=(int)(q*a)%zhi[i];
if(b==yu[i]) break;
else a++;
}
out+=q*a;
out%=total;
}
p=(unsigned __int64)max(zhi);
if(out<p) out+=total;
printf("%u",out);
//printf("%d",clock());
return 1;
} 展开
题型: 编程题 语言: 无限制
描述
相传汉高祖刘邦问大将军韩信统御兵士多少,韩信答说,每3人一列余1人、5人一列余2人、7人一列余4人、13人一列余6人、17人一列余2人、19人一列余10人、23人一列余1人、29人一列余11人。
刘邦茫然而不知其数。你呢? 你是一位优秀的程序员,请你帮刘邦解决这一问题。
输入格式
要求由键盘输入A,B,C,D,E,F,G,H,a,b,c,d,e,f,g,h十六个数,分别代表每A人一列余a、每B人一列余b、每C人一列余c、每D人一列余D、每E人一列余e、每F人一列余f、每G人一列余g、每H人一列余h,其中A,B,C,D,E,F,G,H为互不相等的质数
输出格式
输出总兵士数,要求输出满足条件的最小的一个,但要满足8种排法的每一种排法至少可排一列。(保证给的数据,有结果且计算的结果不会超过2的63次方)
输入样例
2 3 5 7 11 13 17 19
1 1 1 1 1 1 1 1
输出样例
9699691
我的代码:
#include<stdio.h>
//#include<time.h>
#define N 8
int max(int *zhi)
{
int max=0;
int i;
for(i=0;i<N;i++)
if(zhi[i]>max) max=zhi[i];
return max;
}
int main()
{
//printf("%d",clock());
unsigned __int64 total=1,q,out=0,p;
int i,zhi[N],yu[N],a,b;
for(i=0;i<N;i++)
{
scanf("%d",&zhi[i]);
//printf("%u ",zhi[i]);
total*=zhi[i];
}
for(i=0;i<N;i++)
{
scanf("%d",&yu[i]);
//printf("%u ",yu[i]);
}
for(i=0;i<N;i++)
{
a=1;
while(1)
{
q=total/zhi[i];
b=(int)(q*a)%zhi[i];
if(b==yu[i]) break;
else a++;
}
out+=q*a;
out%=total;
}
p=(unsigned __int64)max(zhi);
if(out<p) out+=total;
printf("%u",out);
//printf("%d",clock());
return 1;
} 展开
2个回答
2011-12-14
展开全部
#include "stdio.h"
int main()
{
int t,i,j,b[101]={0};
char a[100];
int n,m,temp;
scanf("%d",&t);
while(t)
{
m=0;
scanf("%d",&n);
scanf("%s", a);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i]==a[j])
{
b[i]++;
}
}
if(m<b[i])
{
m=b[i];
temp=i;
}
b[i]=0;
}
printf("%c\n",a[temp]);
t--;
}
return 0;
}
int main()
{
int t,i,j,b[101]={0};
char a[100];
int n,m,temp;
scanf("%d",&t);
while(t)
{
m=0;
scanf("%d",&n);
scanf("%s", a);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(a[i]==a[j])
{
b[i]++;
}
}
if(m<b[i])
{
m=b[i];
temp=i;
}
b[i]=0;
}
printf("%c\n",a[temp]);
t--;
}
return 0;
}
追问
。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |