POJ 2402 Palindrome Numbers

题目链接

水题,LA我居然没找到在那里。

 1 #include <cstdio>

 2 #include <cstring>

 3 #include <string>

 4 #include <cmath>

 5 #include <ctime>

 6 #include <cstdlib>

 7 #include <iostream>

 8 using namespace std;

 9 #define LL long long

10 LL dp[50],bin[50];

11 int que[31],s;

12 void judge(int x)

13 {

14     s = 0;

15     while(x)

16     {

17         que[s++] = x%10;

18         x /= 10;

19     }

20 }

21 int main()

22 {

23     int i;

24     LL temp,n,x;

25     temp = 1;

26     bin[0] = 1;

27     for(i = 1;i <= 10;i ++)

28     bin[i] = 10*bin[i-1];

29     for(i = 1;i <= 20;i ++)

30     {

31         if(i%2 == 1)

32         {

33             dp[i] = temp*9;

34             temp *= 10;

35         }

36         else

37         {

38             dp[i] = dp[i-1];

39         }

40     }

41     while(cin>>n&&n)

42     {

43         for(i = 1;i <= 20;i ++)

44         {

45             if(n > dp[i])

46             n -= dp[i];

47             else

48             {

49                 if(i == 1)

50                 cout<<n<<endl;

51                 else if(i == 2)

52                 cout<<n<<n<<endl;

53                 else if(i%2 == 1)

54                 {

55                     x = bin[i/2] + n - 1;

56                     cout<<x;

57                     judge(x);

58                     for(i = 1;i < s;i ++)

59                     cout<<que[i];

60                     cout<<endl;

61                 }

62                 else

63                 {

64                     x = bin[i/2-1] + n - 1;

65                     cout<<x;

66                     judge(x);

67                     for(i = 0;i < s;i ++)

68                     cout<<que[i];

69                     cout<<endl;

70                 }

71                 break;

72             }

73         }

74     }

75     return 0;

76 }

你可能感兴趣的:(number)