类斐波那契循环数
#include<bits/stdc++.h>
using namespace std;
#define int long long
int arr[1000010];
bool key(int k){int num=0;string str=to_string(k);for(int i=0;i<str.length();i++){arr[num++]=str[i]-'0';}int l=0,r=num-1;int shix=0; while(shix<k){shix=0;for(int i=l;i<=r;i++){shix+=arr[i]; }if(shix==k)return false;arr[num++]=shix;//判断后不相同,重新求和 l++,r++;}return true;
}
signed main(){int k=1e7;while(key(k--)){}cout<<k+1;return 0;
}
思路就是:找最大嘛,那就从最大往下减->key函数判断这个数是否符合条件->把这个整数的每一个位转化为数组->然后每次求n项和后加到后边,更新这个数列->直至找到为止,若找到就返回false
这里l,r是控制我每次对哪三个数求和
回文串
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){//gmgqlq,qlqgmg//过滤int T;cin>>T;while(T--){string str="";string a;cin>>a;for(int i=0;i<a.length();i++){if(a[i]!='l'&&a[i]!='q'&&a[i]!='b')str+=a[i];}//cout<<str<<" ";string tmp=str;reverse(str.begin(),str.end());if(str!=tmp)cout<<"No"<<endl;else cout<<"Yes"<<endl;}return 0;
}
只过了60%