题目
描述:
设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)求N的值。
输入描述:
程序无任何输入数据。
输出描述:
输出题目要求的四位数,如果结果有多组,则每组结果之间以回车隔开。
题解
题目明确了N是一个四位数,且其9倍等于其反序数,所以N的千位和个位均不能为0。直接暴力求解,枚举出所有可能,每当遇到符合题目要求的解就输出。
代码如下:
#include <stdio.h>int main() {for(int i = 1; i < 10; i++){for(int j = 0; j < 10; j++){for(int k = 0; k < 10; k++){for(int l = 1; l < 10; l++){if(9*(i*1000+j*100+k*10+l) == (i+j*10+k*100+l*1000)){printf("%d\n",i*1000+j*100+k*10+l);}}}}}return 0; }
还有一种更简便的方法,由题意可知,N的取值范围为1000~9999,所以用一层循环即可解决问题。这种方法需要求写一个函数来求出反序数。
#include <stdio.h>int Reverse(int x) {int sum = 0;while(x != 0){sum *= 10;sum += x%10;x /= 10;}return sum; }int main() {for(int i = 1000; i <= 9999; i++){if(i*9 == Reverse(i))printf("%d\n",i);}return 0; }