zoukankan      html  css  js  c++  java
  • 入门经典 第七章 7.7.4 双基回文数

    双基回文数很多,所以可以暴力。

     1 #include <iostream>
     2 #include <cstdlib>
     3 #include <cstdio>
     4 #include <iomanip>
     5 
     6 using namespace std;
     7 
     8 int trans(int n, int base)
     9 {
    10     int a[100], i = 1;
    11     a[0]=n%base;
    12     n/=base;
    13     while (n)
    14     {
    15         a[i++]=n%base;
    16         n/=base;
    17     }
    18     int len = i;
    19     int mrk = 1;
    20     for (i = 0; i < len; ++i)
    21     {
    22         if (a[i] != a[len-1-i])
    23         {
    24             mrk = 0; break;
    25         }
    26     }
    27     return mrk;
    28 }
    29 
    30 int main(void)
    31 {
    32     int n;
    33 #ifndef ONLINE_JUDGE
    34     freopen("in", "r", stdin);
    35 #endif
    36     while (~scanf("%d", &n))
    37     {
    38         int mrk = 0, cnt = 0;
    39         for (int i = n+1; ; ++i)
    40         {
    41             cnt = 0;
    42             for (int j = 2; j < 11; ++j)
    43             {
    44                 if (trans(i, j))
    45                 {
    46                     cnt++;
    47                     if (cnt==2)
    48                     {
    49                         mrk = 1;
    50                         printf("%d\n", i);
    51                         break;
    52                     }
    53                 }
    54             }
    55             if (mrk)
    56                 break;
    57         }
    58     }
    59 
    60     return 0;
    61 }

    注意在trans()函数中,a数组不能小于32,原因是,转化成2进制的时候,数组要足够大,刚开始只开了20,出现了错误,并且发现一个有趣的问题,i的值会竟然会自动调整!不信的话,你试试把代码改成下面这样:(只改这个地方,其他地方不变)

     1  int trans(int n, int base)
     2  {
     3      int a[20], i = 1;
     4      a[0]=n%base;
     5      n/=base;
     6      while (n)
     7      {
     8          a[i++]=n%base;
     9          n/=base; printf("i = %d\n", i); //当 n=1600156, base = 2 的时候,运行一下
    10      }

    这个我还不知道为什么不会报数组越界,Runtime Error。。

  • 相关阅读:
    Switch
    java 函数 运算符
    java 基本类型
    更新时电话查重
    微信公众平台发送模板消息时连发三遍的最简单解决办法
    Yii2.0 发送邮件时中文附件乱码的问题
    Yii2.0 发送文件
    Yii2.0 请求
    Yii2.0随笔 路由
    yii2.0 在save保存之前的操作(放在模型model文件内)
  • 原文地址:https://www.cnblogs.com/liuxueyang/p/2818661.html
Copyright © 2011-2022 走看看