zoukankan      html  css  js  c++  java
  • PAT 甲级 1136 A Delayed Palindrome (20 分)

    思路:

    1.用数组保存这个超级大的数字,每个位置存一位;
    2.用循环每一位相加,进位就做标记,下一次加的时候多+1;
    3.最后循环出来检查标记位,如果有标记则最高位再放一个1;

    代码:

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    vector<int> v,vr,vrs;
    bool isPal(){
       for(int i=0;i<v.size()/2;i++)
       	if(v[i]!=v[v.size()-i-1]) return false;
       return true;
    }
    void printv(const vector<int> & vec){
       for(auto i:vec) printf("%d",i);
    }
    int main(){
       string s;
       cin>>s;
       for(auto c:s) v.push_back(c-'0');
       for(int i=0;i<10;i++){
       	if(isPal()){
       		printv(v); printf(" is a palindromic number.");
       		return 0;
       	}
       	vr=v;
       	reverse(vr.begin(),vr.end());
       	short flag=0;
       	vrs.clear();
       	for(int i=0;i<v.size();i++){
       		vrs.push_back((v[i]+vr[i]+flag)%10);
       		flag=(v[i]+vr[i]+flag)/10;
       	}
       	if(flag==1) vrs.push_back(flag);
       	reverse(vrs.begin(),vrs.end());
       	printv(v); printf(" + "); printv(vr); printf(" = "); printv(vrs); printf("
    ");
       	v=vrs;
       }
       printf("Not found in 10 iterations.");
       return 0;
    }
    
  • 相关阅读:
    noi2002银河英雄传说(并查集)
    Ural1076(km算法)
    km算法的个人理解
    函数之装饰器
    函数进阶(一)
    python全栈测试题(一)
    python基础之循环语句
    字符串方法总结
    python基础3
    python基础2
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12309082.html
Copyright © 2011-2022 走看看