| ||||||||||
| 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