C语言 中国剩余定理 超时了,哪位大神帮忙解决一下

xueyinglanfeng 2012-04-13 11:12:28
#include<stdio.h>
int main()
{
unsigned a[8], b[8], c[8], flag;
int i, k, min;
long long answer = 0, plus = 1, j;
for(i = 0; i < 8; i ++)
scanf("%d", &a[i]);
for(i = 0; i < 8; i ++)
scanf("%d", &b[i]);
min = a[0];
for(i = 0; i < 8;i ++)
{
plus = plus*a[i];
min = min > a[i]? a[i]:min;
for(j = 1; ; j ++)
{
flag=j * a[i] + 1;
for(k = 0; k < 8; k ++)
{
if(k != i)
if(flag%a[k] != 0) break;
}
if(k == 8)
{
c[i] = flag;
answer = answer + b[i] * c[i];
break;
}
}
}
j = answer%plus;
if(min > j) j += plus;
printf("%lld", j);
return 0;
}
...全文
216 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hackbuteer1 2012-05-04
  • 打赏
  • 举报
回复
求题目链接。。
xueyinglanfeng 2012-04-13
  • 打赏
  • 举报
回复
要求由键盘输入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


谢谢提醒
hen_hao_ji 2012-04-13
  • 打赏
  • 举报
回复
楼主给个题目链接吧,这样也不知道题目意思啊。。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧