浙大pat甲级 1024

    xiaoxiao2025-04-07  12

    可用3个vector来进行处理,先将输入的数字都压入到第1第2个vector中,从i=0到K循环判断是否为对称数,如果不是对称数则将其与倒转数相加,并将得到的每一位数加入到第三个vector的头部,并将新的第三个vector重新赋值给第一第二,直到该数为对称数或i==k结束循环。

    ac代码:

    #include<iostream> #include<cstring> #include<algorithm> #include<cstdlib> #include<cstdio> #include<cmath> #include<stack> #define eps 10000000 #include<queue> #include<map> #include<set> using namespace std; int main() { vector<int> v1; vector<int> v2; vector<int> v3; vector<int> v4; char d[15]; cin>>d; for(int i=0;i<strlen(d);i++) { v2.push_back(d[i]-'0'); v1.push_back(d[i]-'0'); } int k; cin>>k; //cout<<k<<endl; //cout<<v1.size()<<endl; for(int i=0;i<=k;i++) { if(i==k) { for(int i=0;i<v1.size();i++) { cout<<v1[i]; } cout<<endl; cout<<i<<endl; break; } int flag=0; for(int j=0;j<v1.size();j++) { //cout<<v1[j]<<" "<<v2[v1.size()-j-1]<<endl; if(v1[j]!=v2[v1.size()-j-1]) { flag=1; break; } } //cout<<flag<<endl; if(flag==0) { for(int j=0;j<v1.size();j++) { cout<<v1[j]; } cout<<endl; cout<<i<<endl; break; } else { int jinwei=0; int dd=v1.size(); for(int j=0;j<dd;j++) { int sum=v1.back()+v2.front()+jinwei; v1.pop_back(); v2.erase(v2.begin()); if(sum>=10) { v3.insert(v3.begin(),sum-10); jinwei=1; } else { v3.insert(v3.begin(),sum); jinwei=0; } } if(jinwei==1) { v3.insert(v3.begin(),1); } v1=v3; v2=v3; v3.clear(); } } }

    转载请注明原文地址: https://ju.6miu.com/read-1297825.html
    最新回复(0)