cms 官方网站,文件传输协议登陆网站,响应式网页设计和自适应网页区别,网店代理题目#xff1a; 6942对于十进制来说是错误的#xff0c;但是对于13进制来说是正确的。即, 6(13) 9(13) 42(13)#xff0c; 而 42(13)4131213054(10)。 任务是写一段程序#xff0c;读入三个整数p、q和 r#xff0c;然后确定一个进制 B(2B40) 使得 p q r。 如果…题目 6×942对于十进制来说是错误的但是对于13进制来说是正确的。即, 6(13)× 9(13) 42(13) 而 42(13)4×1312×13054(10)。 任务是写一段程序读入三个整数p、q和 r然后确定一个进制 B(2B40) 使得 p × q r。 如果 B 有很多选择, 输出最小的一个。 例如p11, q11, r121.则有11(3)× 11(3) 121(3)因为 11(3) 1 × 31 1 × 30 4(10)和121(3)1×322×311×3016(10)。对于进制 10同样有11(10)× 11(10) 121(10)。这种情况下应该输出 3。如果没有合适的进制则输出 0。 输入 一行包含三个整数p、q、r。 p、q、r的所有位都是数字并且1 ≤ p、q、r ≤ 1,000,000。 输出 一个整数即使得p×qr成立的最小的B。如果没有合适的B则输出0。 分析
使用函数分块实现。
1. 实现一个函数传入两个参数一个为所给数n另一个为测试的进制数i最后返回n在i进制下转换的10进制数。
2.使用暴力循环在所给范围内从小到大试探若试探成功则跳出循环输出结果。
3.对输出格式的限制设置一个标志位用来即检测是否试探出正确结果。
代码
#includestdio.h
#includemath.hint somtodec(int n,int i){ //某一进制转换为十进制int result0,power1;while(n0){result (n%10)*power;power*i;n/10;}return result;
}int main(){int a,b,c;int flag0,B0;scanf(%d%d%d,a,b,c);for(int i2;i40;i){if(somtodec(a,i)*somtodec(b,i)somtodec(c,i)){Bi;flag1;break;}}if(flag1)printf(%d\n,B);else printf(0\n);return 0;
}
测试 样例输入 6 9 42 样例输出 13