J : A+B problem
分析 : 各种方式模拟均可 , 我最不擅长的就是这类题。尤其不擅长签到,写了快半个小时
code :
//PS : 看看人家的代码 , 我还是太垃圾了 https://ac.nowcoder.com/acm/contest/view-submission?submissionId=41056869 #include <bits/stdc++.h> using namespace std; typedef long long ll; vector<ll> u,v,p; int main() { int t; scanf("%d",&t); while(t--) { ll a,b; scanf("%lld%lld",&a,&b); u.clear(); v.clear(); p.clear(); while(a) { u.push_back(a%10); a/=10; } while(b) { v.push_back(b%10); b/=10; } reverse(u.begin(),u.end()); reverse(v.begin(),v.end()); for(vector<ll>::iterator it=u.begin();it!=u.end();it++) if(*it!=0) break; else u.erase(it); for(vector<ll>::iterator it=v.begin();it!=v.end();it++) if(*it!=0) break; else v.erase(it); int A=u.size(),B=v.size(); if(A>B) for(int i=1;i<=A-B;i++) v.push_back(0); else for(int i=1;i<=B-A;i++) u.push_back(0); reverse(u.begin(),u.end()); reverse(v.begin(),v.end()); ll ans=0,j=1; for(int i=u.size()-1;i>=0;i--) { ans+=(u[i]+v[i])*j; j*=10; } while(ans%10==0) ans/=10; while(ans) { printf("%lld",ans%10); ans/=10; } printf("\n"); } return 0; }
D: Number
分析:签到
code :
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n,p,tmp; cin>>n>>p; tmp=p; ll cnt=0,t=0; while(tmp) { cnt++; tmp/=10; } if(cnt<n) { cout<<p; for(int i=1;i<=n-cnt;i++) cout<<"0"; } else { if(cnt>n) cout<<"T_T"; else cout<<p; } return 0; }
分析 : 只有常数 ,一次多项式,二次多项式地b^2-4ac<0 无法分解
code :
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 23; ll a[maxn]; int main() { int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); for(int i=n;i>=0;i--) scanf("%lld",&a[i]); if(n==1||n==0) printf("Yes\n"); else if(n==2) { if(a[1]*a[1]-4*a[2]*a[0]>=(ll)0) printf("No\n"); else printf("Yes\n"); } else printf("No\n"); } return 0; }