设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321)
求N的值
#include <stdio.h> void to_array(int num,int a[]) { for(int i = 0;i < 4;i++) { a[i] = num % 10; num /= 10; } } int main() { int a[4],reverse; for(int i = 1000;i < 10000;i++) { to_array(i,a); reverse = 0; for(int j = 0;j < 4;j++) { reverse *= 10; reverse += a[j]; } if(i * 9 == reverse) printf("%d\n",i); } return 0; }
#include<iostream> #include<cmath> using namespace std; int main() { for(int i=1000; i<10000; i++) { int j = i; int x = 3; int sum = 0; while(j) { sum += j % 10 * pow(10, x--); j /=10; } if(sum == i*9) cout << i << endl; } return 0; }
#include<iostream> using namespace std; int main(){ for(int i=1000;i<=9999;i++){ int temp=i,total=0; while(temp>0){ total=total*10+temp%10; temp/=10; } if(total==i*9) cout<<i<<endl; } }
public class Main{ public static void main(String[] args){ //所求数字首位必为1,末位必为9 //设四位数为1ab9,则翻转数为9ba1 int a; int b; for(a = 0 ; a < 10; a++){ for(b = 0; b < 10; b++){ //a b 满足的关系为890*a+80==10*b if(890*a + 80 == 10*b){ System.out.println(1000 + a*100 + b*10 + 9); } } } } }
#include <bits/stdc++.h> using namespace std; int reverse (int x){ int revx=0; while(x!=0){ revx*=10; revx+=x%10; x/=10; } return revx; } int main(){ for(int i=1000;i<=9999;i++){ if(9*i==reverse(i)){ printf("%d\n",i); } } return 0; }使用reverse()函数求出每个的反序数,再从1000到9999枚举就好了。求反序数可以认为是一个循环,逐渐掏空x,丰富revx。
#include <stdio.h> int reversenum(int m) { int n; n = m / 1000 + (m % 1000 / 1000) * 10 + (m % 100 / 10) * 100 + (m % 10) * 1000; return n; } int main() { for (int i = 1000; i < 10000; i++) { if (i * 9 == reversenum(i)) { printf("%d\n", i); } } return 0; }
#include <bits/stdc++.h> using namespace std; int main() { for(int i = 1000; i < 10000; i++) { string s = to_string(i); reverse(***egin(),s.end()); int j = stoi(s); if(i*9 == j) { cout << i << endl; } } return 0; }
//按照数字反转的逻辑解答 #include <iostream> using namespace std; int main() { for(int i=1000; i<10000; ++i){ int res = 0,temp = i; while(temp != 0){ res = res*10 + temp%10; temp /= 10; } if(res == i*9) cout << i << endl; } }
#include <iostream> using namespace std; //求反序数 int fan(int x){ int res = 0; while(x){ int t = x % 10; res = res * 10 + t; x /= 10; } return res; } int main() { for(int i = 1001;i <= 1111;i++){ int j = i * 9; int f = fan(i);//反序数 if(j == f) cout<<i<<endl; } return 0; }
#include<cstdio> int main() { for (int i = 1; i <= 9; i++) { for (int j = 0; j <= 9; j++) { for (int k = 0; k <= 9; k++) { for (int m = 0; m <= 9; m++) { if ((i * 1000 + j * 100 + k * 10 + m) * 9 == m * 1000 + k * 100 + j * 10 + i) { printf("%d%d%d%d\n", i, j, k, m); } } } } } }