Submission #884589

#TimeUsernameProblemLanguageResultExecution timeMemory
884589kokoueOdd-even (IZhO11_oddeven)C++14
0 / 100
0 ms348 KiB
#include<bits/stdc++.h> using namespace std; string n; string cnt2="0"; string sum="1"; void clean(string &s) { int sz=s.size(); int i=0; while(i<sz&&s[i]=='0')i++; if(i==sz) s="0"; else { s=s.substr(i,sz-i); } } int equalSize(string &s1,string &s2) { int sz1=s1.size(),sz2=s2.size(); int max_sz=sz1; if(sz1<sz2) { int diff=sz2-sz1; max_sz=sz2; for(int i=0;i<diff;i++) { s1='0'+s1; } } if(sz2<sz1) { int diff=sz1-sz2; max_sz=sz1; for(int i=0;i<diff;i++) { s2='0'+s2; } } return max_sz; } string sumbig(string s1,string s2) { int summ,rem=0; char c; string result=""; int max_sz=equalSize(s1,s2); for(int i=max_sz-1;i>=0;i--) { summ=(s1[i]-'0')+(s2[i]-'0')+rem; rem=summ/10; c=summ%10+'0'; result=c+result; } if(rem) result='1'+result; return result; } string diff(string s1,string s2) { int sz1=s1.size(),sz2=s2.size(),lamp,rem=0,diff; string result; char c; if((sz2>sz1) || (sz1==sz2 && s1<s2)) { swap(s1,s2); lamp=1; } int max_sz=equalSize(s1,s2); for(int i=max_sz-1;i>=0;i--) { diff=(s1[i]-'0'-rem)-(s2[i]-'0'); rem=0; if(diff<0){diff+=10;rem=1;} c=diff+'0'; result=c+result; } clean(result); return result; } string multy(string s,int dig) { int sz,max_sz,mult,rem=0; sz=s.size(); string result; string c; if(dig) { for(int i=sz-1;i>=0;i--) { mult=(s[i]-'0')*dig+rem; rem=mult/10; c=mult%10+'0'; result=c+result; } if(rem>0){c=rem+'0';result=c+result;} } else result="0"; return result; } bool cmpBig(string s1,string s2) { int sz1=s1.size(),sz2=s2.size(); if(sz1>sz2) return true; if(sz1==sz2) { if(s1>s2) return true; } return false; } bool cmpBig2(string s1,string s2) { int sz1=s1.size(),sz2=s2.size(); if(sz1>sz2) return true; if(sz1==sz2) { if(s1>s2) return true; if(s1==s2) return true; } return false; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cin>>n; string cnt2="0"; string sum="1"; int br=0; while(cmpBig(n,"1") && br<100) { // cout<<"n="<<n<<", sum="<<sum<<", cnt2="<<cnt2<<"\n"; if(cmpBig(n,sumbig(cnt2,"1"))) sum=sumbig(sum,sumbig("1",multy(cnt2,2))); else {sum=sumbig(sum,multy(diff(n,"1"),2));} // cout<<"n="<<n<<", sum="<<sum<<", cnt2="<<cnt2<<"\n"; cnt2=sumbig(cnt2,"1"); if(cmpBig2(cnt2,n)) break; n=diff(n,cnt2); // cout<<"n="<<n<<", sum="<<sum<<", cnt2="<<cnt2<<"\n"; br++; } cout<<sum<<"\n"; return 0; }

Compilation message (stderr)

oddeven.cpp: In function 'std::string diff(std::string, std::string)':
oddeven.cpp:60:37: warning: variable 'lamp' set but not used [-Wunused-but-set-variable]
   60 |     int sz1=s1.size(),sz2=s2.size(),lamp,rem=0,diff;
      |                                     ^~~~
oddeven.cpp: In function 'std::string multy(std::string, int)':
oddeven.cpp:82:12: warning: unused variable 'max_sz' [-Wunused-variable]
   82 |     int sz,max_sz,mult,rem=0;
      |            ^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...