|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
找出最大的有由两个三位数乘积构成的回文数
#include<stdio.h>
int main()
{
long long int c,d=0,e;
for(c=10000;c<=998001;c++)
{
e=c;
d=d*10+c%10;
c=c/10;
}
if(d==e)
{
printf("%lld\n",c);
}
return 0;
}
求大佬看看我的逻辑哪里不对,为什么编译通过但是输出不了结果。
本帖最后由 4goodworld 于 2020-2-24 21:43 编辑
题目的要求是:两个三位数乘积构成的回文数
你为啥一定是才结果反推两个三位数,不能从两个三位数正向的寻找吗?
- int isPalindromeNumber(int num) {
- int one, two, three, four, five, six;
- six = num / 100000;
- five = (num - six * 100000) / 10000;
- four= (num - six * 100000-five*10000) / 1000;
- three= (num - six * 100000 - five * 10000-four*1000) / 100;
- two= (num - six * 100000 - five * 10000 - four * 1000-three*100) / 10;
- one = (num - six * 100000 - five * 10000 - four * 1000 - three * 100-two*10);
- if (four == three && five == two && six == one) {
- return 1;
- }
- else {
- return 0;
- }
- }
- int main(){
- //找出最大的有由两个三位数乘积构成的回文数
- int i, j, sum, max, max_i,max_j;
- max_i= max_j=max = 0;
- for (i = 100; i < 999; i++) {
- for (j = 100; j < 999; j++) {
- sum = i * j;
- if (isPalindromeNumber(sum)) {
- if (sum > max) {
- max_i = i;
- max_j = j;
- max = sum;
- }
- }
- }
-
- }
- printf("最大回文数是:%d * %d = %d", max_i, max_j, max);
- return 0;
- }
复制代码
这是我的思路
|
|