A+B for Polynomials
这道题就是有个坑是对于多项式,如果底数为0,则不需要输出
#include<bits/stdc++.h>
using namespace std;
int main()
{
map<int,double> mp;
vector<pair<int,double>> res;
int n,m;
cin >> n;
for(int i=0; i<n; i++)
{
int a;
double b;
cin >> a >> b;
mp[a]+=b;
}
cin >> m;
for(int i=0; i<m; i++)
{
int a;
double b;
cin >> a >> b;
mp[a]+=b;
}
for(auto item:mp)
{
if(item.second==0)
continue;
res.push_back({item.first,item.second});
}
cout << res.size();
sort(res.begin(),res.end());
for(int i=res.size()-1; i>=0; i--)
{
if(res[i].second==0)
continue;
printf(" %d %.1lf",res[i].first,res[i].second);
}
return 0;
}
Palindromic Number
这道题的坑在于如果最初输入的是一个回文数,则直接输出一个回文数和0
#include<bits/stdc++.h>
using namespace std;
vector<int> add(vector<int> A,vector<int> B)
{
int t=0;
vector<int> C;
for(int i=A.size()-1; i>=0; i--)
{
t+=A[i];
if(i>=0)
t+=B[i];
C.push_back(t%10);
t/=10;
}
while(t)
{
C.push_back(t%10);
t/=10;
}
return C;
}
bool check(string s)
{
string s1=s;
reverse(s.begin(),s.end());
for(int i=0; i<s.size(); i++)
if(s[i]!=s1[i])
return false;
return true;
}
int main()
{
string s;
int k;
cin >> s >> k;
if(check(s))
{
cout << s << endl << 0;
return 0;
}
int T;
for(T=1; T<=k; T++)
{
vector<int> A,B;
for(int i=0; i<s.size(); i++)
A.push_back(s[i]-'0');
reverse(s.begin(),s.end());
for(int i=0; i<s.size(); i++)
B.push_back(s[i]-'0');
s="";
vector<int> C=add(A,B);
for(int i=C.size()-1; i>=0; i--)
s+=to_string(C[i]);
if(check(s))
{
cout << s << endl << T;
return 0;
}
}
if(T==k+1)
{
cout << s << endl << k;
}
return 0;
}