zoukankan      html  css  js  c++  java
  • PAT A1024 Palindromic Number

    题意:回文字,对输入数值进行判断,若不是回文,则反转相加继续。

    分析:数值1010,再迭代相加100次,大概达到1040级;long long型也不足以表示,需要使用字符型处理。使用字符串的转化为大数数组处理。
    注意:大数运算是唯一long long也无法处理的数据大小,结果输出处需要迭代输出

    #include<cstdio>
    #include<string.h>
    
    using namespace std;
    const int N =1000;//最大位数
    
    struct bign{
        int value[N];
        int len;
        bign(){
            memset(value,0,sizeof(value));
            len = 0;
        }
    };
    
    bign change(char s[]){
        bign a;
        a.len = strlen(s);
        for(int i=0;i<a.len;i++){
            a.value[i] = s[a.len-1-i]-'0';//逆序存储
        }
        return a;
    }
    
    bool ispal(bign a){
        for(int i=0;i<=(int)(a.len/2);i++){//取了是因为a.len = 1的情况
            if(a.value[i] != a.value[a.len-1-i]) return false;
        }
        return true;
    }
    
    bign add(bign a){
        bign b;
        int temp=0;//进位
        b.len = a.len;
        for(int i=0;i < b.len;i++){
            temp += a.value[i]+a.value[a.len-1-i];
            b.value[i] = temp%10;//余数为该位的值
            temp /= 10;//进位
        }
        if(temp!=0){//仍有进位
            b.value[b.len] = temp;
            b.len++;
        }
        return b;
    }
    int main(){
        char s[N];
        int k;
        scanf("%s %d",s,&k);
        bign a = change(s);
        int c = 0;
        for(int i = 0; i < k ; i++){//处理c次,c<=k
            if(ispal(a) == true)
                break;
            else{
                a = add(a);
                c++;
            }
        }
        for(int j=0;j<a.len;j++){
            printf("%d",a.value[a.len-1-j]);
        }
        printf("
    ");
        printf("%d",c);
        return 0;
    }
    
  • 相关阅读:
    [LeetCode] Baseball Game
    [Linux] Shell Scripts
    [Linux] 正则表达式与文件格式化处理
    [Linux] 学习bash
    [Linux] vim程序编辑器
    [Linux] 文件与文件系统的压缩打包与备份
    [LeetCode] Reverse Words in a String
    [LeetCode] Reverse Integer
    [国嵌笔记][017][Makefile工程管理]
    [国嵌笔记][016][交叉工具链]
  • 原文地址:https://www.cnblogs.com/shuibeng/p/13567009.html
Copyright © 2011-2022 走看看