[蓝桥杯2019初赛]立方和
希望以后别人会看到你背后的努力,而不是只会看到你外表所呈现和他自己想象的结果。#include<iostream>#include<algorithm>#include<cstdio>#include<cmath>#include<string>#include<cstring>#include<cstdlib>#
·
希望以后别人会看到你背后的努力,而不是只会看到你外表所呈现和他自己想象的结果。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<cstdlib>
#include<stack>
#include<queue>
#include<set>
#include<vector>
#include<map>
#include<ctime>
#include<cctype>
#include<bitset>
#include<utility>
#include<sstream>
#include<iomanip>
#include<typeinfo>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
string sum="0";
bool check(int x){
while(x){
int ls=x%10;
if(ls==2||ls==0||ls==1||ls==9)
return true;
x/=10;
}
return false;
}
string turn(ll x){
string ans="";
while(x){
int ls=x%10;
char c=ls+'0';
ans=ans+c;
x/=10;
}
reverse(ans.begin(),ans.end());
return ans;
}
string add(string a,string b){
string ans;
int na[110]={0},nb[110]={0};
int cda=a.size();
int cdb=b.size();
for(int i=0;i<cda;i++)
na[cda-i-1]=a[i]-'0';
for(int i=0;i<cdb;i++)
nb[cdb-i-1]=b[i]-'0';
int mx=max(cda,cdb);
for(int i=0;i<mx;i++){
na[i]+=nb[i];
na[i+1]+=na[i]/10;//进位
na[i]%=10;//减十
}
if(!na[mx])
mx--;
for(int i=mx;i>=0;i--)
ans+=na[i]+'0';
return ans;
}
int main(){
for(int i=1;i<=2019;i++){
if(check(i)){
ll lf=i*i;
string ls=turn(lf*i);
sum=add(sum,ls);
// cout<<ls<<' '<<sum<<endl;
}
}
cout<<sum<<endl;
return 0;
}
更多推荐
已为社区贡献6条内容
所有评论(0)