水题大全

2015-11-01 13:17:00 ~ 2015-11-01 19:17:00

本次比赛题目非常的难(shui),请大家谨(duo)慎(duo)报名. 邀请码:17df 题解: a%b: 这道题虽说是高精度,但其实非常简单。 做法:读字符串代替大数字,从前往后一位一位除,并且取余数。 注意:这道题最后一组数据的除数要用long long(int 64),不然80。 c代码:

include<stdio.h>

include<string.h>

include<stdlib.h>

include<math.h>

char a[1024]; long long bcs,cs; int main(){ int i,j,k,x=1; gets(a); scanf("%I64d",&cs); for(i=0;i<strlen(a);i++){ bcs=bcs*10+a[i]-'0'; if(bcs<=cs&&x)continue; x=0; bcs%=cs; } printf("%I64d\n",bcs); //puts(""); return 0; }

小数字变大数字: 这道题找到了方法其实特别简单,但必须用long long(int 64),否则拿不到全分。 做法就两步(n是用来存要拆的数的,m是用来存结果的): 首先判定:如果n=1则直接输出1,直接结束 第一步:如n mod 3为1 则n-4,m先设为4;如果n mod 3==2 则n-2,m先设为2,否则m先设为1。 第二步:因为已经将n变为3的倍数了,则当n>0时 n-3并且m*3。 然后就可以输出m了。 c代码:

include<stdio.h>

include<stdlib.h>

include<string.h>

include<math.h>

int main(){ long long i,j,k,m,n; scanf("%I64d",&n); if(n==1){ printf("%d\n",1);return 0;} if(n%3==2){ m=2; n-=2; } else if(n%3==1){ n=4; m-=4; } else m=1; while(n>0){ n-=3; m*=3; } if(n==1)m=1; printf("%I64d\n",m); return 0; }