2019暑期集训牛客多校7
D.Number
题意
给两个树n、q,q是素数,求一个n位且能整除q的数。比赛时被D、J这两道水题卡,真难受,还好有个给力的队友。
题解
#include<iostream>
using namespace std;
const int MAXN=1e6+10;
char s[MAXN];
int c_bit(int t)
{
int cot=0;
while(t)
{
cot++;
t=t/10;
}
return cot;
}
int ksm(int res,int cnt)
{
int sum=1;
while(cnt)
{
if(cnt&1)sum*=res;
res*=res;
cnt>>=1;
}
return sum;
}
int main()
{
int n,p;
int cot=0;
cin>>n>>p;
cot=c_bit(p);
if(cot>n){
cout<<"T_T"<<endl;
return 0;
}
for(int i=1;i<10;i++)
{
int len=c_bit(i*p);
if(len==n){
cout<<i*p<<endl;
return 0;
}
if(len<n){
cout<<i*p;
for(int j=1;j<=n-len;j++)
cout<<'0';
cout<<endl;
return 0;
}
}
cout<<"T_T"<<endl;
return 0;
}
J.A+B problem
题意
给你两个数,把两个倒过来相加再倒过来输出,如果用字符串做,进位比较麻烦,要注意去掉前导后导0。
题解
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
char a[50],b[50];
int len_a,len_b;
long long sum_a=0,sum_b=0,sum=0;
cin>>a>>b;
len_a=strlen(a);
len_b=strlen(b);
for(int i=len_a-1;i>=0;i--)
sum_a=sum_a*10+a[i]-'0';
for(int i=len_b-1;i>=0;i--)
sum_b=sum_b*10+b[i]-'0';
sum=sum_a+sum_b;
while(sum%10==0) sum/=10;
while(sum)cout<<sum%10,sum/=10;
cout<<endl;
}
}