Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
关于这一题的做法及代码这一题输入的数据全为十进制的数,包括输入的范围也是。对于一个在范围内的十进制数i,将它转化为B1进制后的数s,将s乘以某一整数倍后转换成“B2进制”的数同样为s。那么这个数i就是要输出的结果。(看错的注意看题,题目中说了输入的全为十进制。而原文示例中只不过将一个十进制拿来用而已,而省略了转换过程,请不要被误导) 以下为我写的代码,若有改进,请贴出共同分享: #include"stdio.h" #include"string.h" #include"stdlib.h" int main() { int n; scanf("%d",&n); while(n--) { int a,b; char c[100][5]; int min,max; int i,j,temp,k; char ji[101][5]; for(i=0;i<=100;i++)/*表示进制数的每一位,用字符串存。如“11”代表进制数的某“一”位为“11”*/ sprintf(ji[i],"%d",i);/*将数字i转换为字符串存入ji[i]中*/ scanf("%d%d%d%d",&a,&b,&min,&max); for(i=ma-1;i>mi;i--) { k=i; j=0; while(k!=0)/*进制转换*/ { temp=k%a;/*求余*/ strcpy(c[j],ji[temp]);/*将求余的余数顺序存入c[j]中, 代表转换后的a进制的每一位*/ j++; k/=a; } temp=0; for(k=j-1;k>=0;k--) temp=temp*b+atoi(c[k]);/*将应的b进制转换成十进制*/ if(temp%i==0)/*叛断是否符合条件*/ { printf("%d\n",i); break; } } if(i<=mi)/*不符合条件*/ printf("Non-existent.\n"); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator