C语言韩信点兵(容易超时) 求韩信点兵算法(c语言),限时500ms,求解?

c\u8bed\u8a00\u7f16\u7a0b \u97e9\u4fe1\u70b9\u5175 \u603b\u662f\u8d85\u65f6 \u7f51\u4e0a\u7684\u529e\u6cd5\u7528\u8fc7\u90fd\u4e0d\u884c\u6c42\u89e3 \u56f0\u6270\u6211\u597d\u4e45\u4e86 \u8fd8\u6709\u5982\u4f55\u5982\u4f55\u7528\u679a

\u4f60\u7684\u56fe\u7247\u770b\u4e0d\u6e05\u695a\uff0c\u622a\u5c4f\u6216\u8005\u53d1\u94fe\u63a5\u3002

\u7b54\u6848\uff1a22439962

递归的思想,1个队列的话,3余1,明显就是3x+1,最小x=1;和为4
两个队列,5余2,,首先他要满足4+3x的形式,才能满足1,找最小的x使3x+4%5=2;5次以内必找到,和为7;
三个队列7+(3*5)x%7=4;7次必找到;可以得出最多只要计算A+B+C+D+E+F+G+H次的乘法和除法,不可能超1000MS。

Sample Input
3 5 7 13 17 19 23 29
1 2 4 6 2 10 1 11
Sample Output
1306792
这个结果不对啊,1306792取余29是23,不是11!
用下面的程序,输出结果是224399662!

#include <stdio.h>

void main()
{
unsigned int i;
unsigned int col[8];
unsigned int rem[8];
unsigned long col_count;
unsigned int item;
unsigned long total;

while(1)
{
total = 0xffffffff;
printf("total(0xffffffff) = %lu\n",total);
printf("1: Start\n");
printf("0: Exit\n");
printf("Please select the operation:\n");
scanf("%d",&item);
if(item != 1)
break;
printf("Please input the condition:\n");
scanf("%d %d %d %d %d %d %d %d",&col[0],&col[1],&col[2],&col[3],&col[4],&col[5],&col[6],&col[7]);
scanf("%d %d %d %d %d %d %d %d",&rem[0],&rem[1],&rem[2],&rem[3],&rem[4],&rem[5],&rem[6],&rem[7]);
printf("Calculating,please waiting...\n");
printf("%d %d %d %d %d %d %d %d\n",col[0],col[1],col[2],col[3],col[4],col[5],col[6],col[7]);
printf("%d %d %d %d %d %d %d %d\n",rem[0],rem[1],rem[2],rem[3],rem[4],rem[5],rem[6],rem[7]);

item = 2;
col_count = 0;
while(1)
{
col_count ++;
total = col_count * col[7] + rem[7];
for(i=0; i<7; i++)
{
if((total % col[i]) != rem[i])
break;
}
if(i>=7)
break;
if(total >= (0xffffffff - col[7] - rem[7]))
{
printf("No result! Continue?(1:yes 0:no)");
scanf("%d",&item);
break;
}
}
if(item == 1)
continue;
else if(item == 0)
break;
else
{
printf("i = %d\n",i);
printf("The total army is: %lu\n",total);
printf("Continue?(1:yes 0:no)");
scanf("%d",&item);
if(item == 0)
break;
}
}
}

用c语言编程问题补充:最后答案是1051! #include

4274527

  • c璇█缂栫▼搴:闊╀俊鐐瑰叺,闊╀俊鏈変竴闃熶紞,浣犳兂鐭ラ亾鏈夊灏戜汉,灏辫澹叺鎶ユ暟...
    绛旓細闊╀俊鐐瑰叺涓嶆槸鎸3浜轰竴鎺掞紝5浜轰竴鎺掞紝7浜轰竴鎺掑悧锛熷鏋滄槸杩欐牱鐨勮瘽 include<stdio.h> int main(){ int n,a,b,c;scanf("%d%d%d",&a,&b,&c);for(n=10;n<=200;n++){ if (n%3==a && n%5==b && n%7==c){ if(n<=100){ printf("%d",n);break;} else { printf("No ...
  • 鍏充簬澶т竴鐨C璇█闂,闊╀俊鐐瑰叺銆傘
    绛旓細int x=1;while ( x%5!=1 || x%6!=5 || x%7!=4 || x%11!=10 ) x++;printf("%d",x);
  • C璇█闊╀俊鐐瑰叺
    绛旓細鍥犱负寰幆閲岄潰锛岃瀹氫簡 i<=100锛屽嵆鎵ц瀹屽惊鐜紝i 鑲畾鏄101锛屾墍浠ワ紝if(i>100) printf("No answer\n");鏄彲浠ユ墽琛岀殑銆傚叾瀹炰綘鍙互鍗曟璋冭瘯涓涓嬪氨鐭ラ亾浜嗐
  • 闊╀俊鐐瑰叺闂姹傝В...涓嶇敤鏋氫妇鐨勮瘽,搴旇鎬庝箞瑙e喅鍛??(C璇█)
    绛旓細include <stdio.h> int main(){ int a,b,c,n;printf("杈撳叆涓変釜鏁帮細");scanf("%d%d%d",&a,&b,&c);n = (70*a+21*b+15*c)%105;printf("缁撴灉涓%d+105*n(n涓轰换鎰忚嚜鐒舵暟)\n",n);} //a涔樹互70鏄娇寰楄鏁板彲浠ユā3寰梐锛屽洜涓70妯3寰1锛屾墍浠*70妯3寰梐锛涘叾浠栫殑21銆15妯3寰0...
  • 闊╀俊鐐瑰叺(c璇█)
    绛旓細浣犲畬鍏ㄦ病鏈夋寜鐓ч鐩姹傚仛銆俰nclude <stdio.h>void main(){long long i,A,B,C,D,E,F,G,H,a,b,c,d,e,f,g,h;scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld",&A,&B,&C,&D,&E,&F,&G,&H,&a,&b,&c,&d,&e,&f,&g,&h);for(i=A;...
  • 濡傛灉涓涓C璇█棰樼洰鏄:鈥闊╀俊鐐瑰叺,涓変笁鏁颁箣浣2,涓変簲鏁颁綑3,涓冧竷鏁颁綑2...
    绛旓細濡傛灉涓変欢涓変欢鍦版暟锛屽氨浼氬墿涓嬩袱浠讹紱濡傛灉浜斾欢浜斾欢鍦版暟锛屽氨浼氬墿涓嬩笁浠讹紱濡傛灉涓冧欢涓冧欢鍦版暟锛屼篃浼氬墿涓嬩袱浠躲傞棶锛氳繖鎵圭墿鍝佸叡鏈夊灏戜欢锛熷彉鎴愪竴涓函绮圭殑鏁板闂灏辨槸锛氭湁涓涓暟锛岀敤3闄や綑2锛岀敤5闄や綑3锛岀敤7闄や綑2銆傛眰杩欎釜鏁般俰nclude<stdio.h> void main(){printf("濡備笅鏁板彲绗﹀悎瑕佹眰锛");for(int...
  • C璇█闊╀俊鐐瑰叺 绾犻敊
    绛旓細include <stdio.h>int main(void){ int a,b,c,i; printf("Input a, b, c(int a,b,c>=0)...\n"); if(scanf("%d%d%d",&a,&b,&c)!=3 || a<0 || b<0 || c<0){ printf("Input error, exit...\n"); return 0; } for(i=10;i<101;i++...
  • c璇█浠g爜闂
    绛旓細鍙兘浣犳槸娌$湅鏄庣櫧棰樼洰瀹冨湪璁蹭粈涔堬紝鍏跺疄铔畝鍗曠殑锛乮nclude <stdio.h> int main(){ int num;for(num=0;;num++){ if(num%5==1 && num%6==5 && num%7==4 && num%11==10)break;} printf("鑷冲皯搴旇鏈%d涓+鍏!\n",num);return 0;} ...
  • 鍗庡崡鍐滀笟澶у鏂扮敓c璇█绔炶禌棰--闊╀俊鐐瑰叺
    绛旓細if(i%A==a&&i%B==b&&i%C==c&&i%D==d&&i%E==e&&i%F==f&&i%G==g&&i%H==h){ sum=i;break;} } printf("%ld",sum);} 甯堝紵鍟婏紝浣犱滑濂藉垢杩愬晩锛屾垜浠幓骞存潵鍗庡啘鐨勬椂鍊欙紝娌″彲娌℃湁杩欎箞濂界殑鏈轰細鏈夎繖浜涚珵璧涘摝锛屽笇鏈涗綘濂藉ソ鎶婃彙锛佸叾瀹炶繖浜涗綋閮戒笉鏄緢闅撅紝鍙槸浣犱滑浠ュ墠娌℃帴瑙﹁繃C璇█...
  • 鍏充簬C璇█鐨勯棶棰,绗竴棰樻槸闊╀俊鐐瑰叺,姹傛讳汉鏁;绗簩棰樻槸鍦1000鍒9999涔嬮棿...
    绛旓細include<stdio.h> void sum(int a,int b,int c) { int s; for(s=10;s<=100;s++) { if(s%3==a&&s%5==b&&s%7==c) printf("%d\n",s); } } void main() { int a,b,c,d; printf("璇疯緭鍏銆乥銆乧鐨勫:\n"); scanf("%d,%d,%d",&a,&b,&c);...
  • 扩展阅读:韩信点兵3人一排多出2人 ... c语言运行超时怎么解决 ... 韩信点兵的4种解法 ... 韩信打野必背十句口诀 ... 韩信点兵问题怎么解决 ... 泡茶顺口溜韩信点兵 ... c语言韩信点兵穷举法 ... 韩信点兵一一歇后语 ... 韩信点兵c语言编程博客 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网