zoukankan      html  css  js  c++  java
  • 1999 NOIP 回文数

    P1015 回文数 (NOIP1999)

    思路:

    因为存在不同进制的问题,所以考虑用高精度实现。利用对高精度进位的控制来实现不同进制的加法。然后再利用一个循环调用高精度的函数来解题。
     1 # include <cstdio>
     2 # include <cstring>
     3 # include <algorithm>
     4 # include <cstdlib>
     5 #include <iostream>
     6 using namespace std;
     7 char a[10000];
     8 int c[10000],al[10000]={0},n=0,len=0,sum=0,flag=0;
     9 int add()
    10 {
    11     sum++;
    12     memset(c,0,sizeof(c));
    13     for(int i=1;i<=len;i++)
    14     {
    15         c[i]+=al[i]+al[len-i+1];
    16         if(c[i]>=n)
    17         {
    18             c[i+1]++;
    19             c[i]=c[i]%n;
    20         }
    21     }
    22     if(c[len+1]!=0)
    23         len++;
    24     for(int i=1,j=len;i<=j,j>=i;i++,j--)
    25     {
    26         if(c[i]!=c[j])
    27             break;
    28         if(i==j||j-i==1)
    29             flag=1;
    30     }
    31     for(int i=1;i<=len;i++)
    32         al[i]=c[i];
    33 }
    34 int main()
    35 {
    36     cin >> n;
    37     cin >> a;
    38     for(int i=strlen(a)-1;i>=0;i--)
    39     {       if(a[i]=='0'||a[i]=='1'||a[i]=='3'||a[i]=='4'||a[i]=='5'||a[i]=='6'||a[i]=='7'||a[i]=='8'||a[i]=='9')
    40             al[strlen(a)-i]=a[i]-'0';
    41         if(a[i]=='A'||a[i]=='B'||a[i]=='C'||a[i]=='D'||a[i]=='E'||a[i]=='F')
    42             al[strlen(a)-i]=a[i]-'A'+10;
    43     }
    44     len = strlen(a);
    45     for(int j=1;j<=30;j++)
    46     {
    47         add();
    48         if(flag==1)
    49         {
    50             cout << "STEP=" << sum << endl;
    51             return 0;
    52         }
    53     }
    54     cout << "Impossible!" << endl;
    55     return 0;
    56 }
  • 相关阅读:
    经典之计算机内存管理
    Git 远程仓库
    【玩转微信公众平台之十】 图文消息回复解说
    C++11中的继承构造函数
    树莓派使用无线网卡上网相关命令
    swift的UITableView的使用
    相似微信的ChattingUi
    HDOJ 5289 Assignment 单调队列
    poj1936
    samba 文件和目录权限控制
  • 原文地址:https://www.cnblogs.com/OIerPrime/p/7674646.html
Copyright © 2011-2022 走看看