本文主要是介绍xtu-c语言考试复习-2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1223
确实写不出,数据远超过64位,难道用数组存吗,但是不好计算,想到的思路是取模,一边计算,一边取模,就不会超过数据范围,但是数学原理没懂,所以做不出来
看了下自己以前写的博客,确实是取模,以后积累经验,就是如果超过了数据范围,就直接用取模运算来控制这个范围
#include<stdio.h>
#include<stdbool.h>int main()
{int t;scanf("%d",&t);while(t--){int m;scanf("%d",&m);int k=1;int cnt=1;bool flag=false;for(int i=1;i<1000000;i++){k%=m;if(k==0) {printf("%d\n",cnt);flag=true;break;}k=k*10+1;cnt++;}if(!flag) puts("0");}return 0;
}
看自己博客又敲了一遍,WA了一次,因为我把循环的上界设置为了输入的数字,但是是不可取的,好吧,又试了一下,把上界设成输入的数字,取到等于号就可以过了
1308
样例能过,但是WA,实在想不通
#include<stdio.h>int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);int cnt1=0,cnt2=0;while(n!=1){int temp=n%2;int m=n-temp;m/=2;cnt1++;cnt2+=m;n=n-m;}printf("%d %d\n",cnt1,cnt2);}return 0;
}
确实是自己没有考虑到位,应该是没有考虑需要比赛的人数是偶数的情况,先补上一份按照之前博客写的代码,再看下能不能把上面的代码改对
#include<stdio.h>int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);int cnt1=0,cnt2=0;int m=0;while(n>1){m=1;while(m<n) m*=2;if(m!=n) m/=2;cnt1++;cnt2+=m/2;n=n-m/2;}//printf("%d\n",m);printf("%d %d\n",cnt1,cnt2);}return 0;
}
改了一下还是改不出来,想不明白
这篇关于xtu-c语言考试复习-2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!