设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> 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<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 <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 <stdio.h> int main(){ for (int i = 0; i < 10; i++){ for (int j = 0; j < 10; j++){ if ((1009 + 100 * i + 10 * j) * 9 == (9001 + 10 * i + 100 * j)) printf("1%d%d9\n", i, j); } } 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; }