注:此为c++代码
虽然我的代码无注释,但如想复制,必须完全搞懂代码所对应的题!
Dev c++这东西点进来的都有吧,详情见我的另一篇文章。
正式进入题解部分: (本人小白,大佬们请勿吐槽)
1307:
#include<bits/stdc++.h>
using namespace std;
char a1[888],b1[888];
int a[888],b[888],c[8888],lena,lenb,bw,jw,lenc;
bool flag;
int main()
{
cin>>a1>>b1;
lena=strlen(a1);
lenb=strlen(b1);
for(int i=0;i<=lena-1;i++)
{
a[lena-i]=a1[i]-'0';
}
for(int i=0;i<=lenb-1;i++)
{
b[lenb-i]=b1[i]-'0';
}
for(int i=1;i<=lenb;i++)
{
jw=0;
for(int j=1;j<=lena+1;j++)
{
c[i+j-1]+=a[j]*b[i]+jw;
jw=c[i+j-1]/10;
c[i+j-1]%=10;
}
}
lenc=lena+lenb;
while(c[lenc]==0&&lenc>1) lenc--;
for(int i=lenc;i>=1;i--)
{
cout<<c[i];
}
return 0;
}
1308:
#include<bits/stdc++.h>
using namespace std;
int a[305],b[305],c[305];
void init(int x[]){
string s;
cin>>s;
x[0]=s.size();
for(int i=1;i<=x[0];i++){
x[i]=s[x[0]-i]-'0';
}
}
void numcpy(int p[],int q[],int wz){
for(int i=1;i<=p[0];i++) q[i+wz-1]=p[i];
q[0]=p[0]+wz-1;
}
int numcmp(int a[],int b[]){
if(a[0]>b[0]) return 1;
if(a[0]<b[0]) return -1;
for(int i=a[0];i>=1;i--){
if(a[i]>b[i]) return 1;
if(a[i]<b[i]) return -1;
}
return 0;
}
void gjj(int a[],int b[]){
int flag;
flag=numcmp(a,b);
if(flag==0){
a[0]=0;
return ;
}
if(flag==1){
for(int i=1;i<=a[0];i++){
if(a[i]<b[i]){
a[i+1]--;
a[i]+=10;
}
a[i]-=b[i];
}
while(a[0]>0&&a[a[0]]==0) a[0]--;
}
}
void gjc(int a[],int b[],int c[]){
int i,tmp[101];
c[0]=a[0]-b[0]+1;
for(i=c[0];i>=1;i--){
memset(tmp,0,sizeof tmp);
numcpy(b,tmp,i);
while(numcmp(a,tmp)>=0){
c[i]++;
gjj(a,tmp);
}
}
while(c[c[0]]==0&&c[0]>0) c[0]--;
}
void sc(int a[]){
if(a[0]==0){
cout<<0;
return ;
}
for(int i=a[0];i>=1;i--){
cout<<a[i];
}
cout<<endl;
}
int main(){
init(a);
init(b);
gjc(a,b,c);
sc(c);
sc(a);
return 0;
}
1309:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[500],b[500],step=0;
char str[500];
void add(int a[],int b[])
{
int i;
for(i=1;i<=a[0];i++)
{
a[i]+=b[i];
a[i+1]+=a[i]/n;
a[i]%=n;
}
if(a[a[0]+1]>0)
a[0]+=1;
}
bool judge(int a[])
{
int i;
for(i=1;i<=a[0]/2;i++)
if(a[i]!=a[a[0]-i+1])
return false;
return true;
}
void overturn(int a[])
{
int i,j;
b[0]=a[0];
j=1;
for(i=a[0];i>=1;i--)
{
b[j]=a[i];
j++;
}
}
void print(int a[])
{
int i;
for(i=a[0];i>=1;i--)
cout<<a[i];
cout<<endl;
}
int main()
{
int len;
int i;
cin>>n>>str;
len=strlen(str);
int k=1;
for(i=len-1;i>=0;i--)
{
if('0'<=str[i]&&str[i]<='9')
{
a[k]=str[i]-'0';
k++;
}
if('a'<=str[i]&&str[i]<='z')
{
a[k]=str[i]-'a'+10;
k++;
}
if('A'<=str[i]&&str[i]<='Z')
{
a[k]=str[i]-'A'+10;
k++;
}
}
a[0]=len;
while(judge(a)==0)
{
overturn(a);
add(a,b);
step++;
if(step>30)
break;
}
if(step>30)
cout<<"Impossible"<<endl;
else
cout<<step<<endl;
return 0;
}
1168:
#include<bits/stdc++.h>
using namespace std;
int a[202],b[202],c[202],la,lb,lc,x=0;
char a1[2000],b1[2000];
int main ()
{
cin>>a1>>b1;
la=strlen(a1);
lb=strlen(b1);
for(int i=0;i<=la-1;i++)
{
a[la-i]=a1[i]-'0';
}
for (int j=0;j<=lb-1;j++)
{
b[lb-j]=b1[j]-'0';
}
lc=1;
while(lc<=la||lc<=lb)
{
c[lc]=a[lc]+b[lc]+x;
x=c[lc]/10;
c[lc]%=10;
lc++;
}
c[lc]=x;
while(c[lc]==0)
{
lc--;
}
for(int k=lc;k>=1;k--)
{
cout<<c[k];
}
return 0;
}
1169:
#include<bits/stdc++.h>
using namespace std;
char a[888],b[888];
int a1[888],b1[888],c[888],lena,lenb,bw,jw,www;
bool flag;
int main()
{
cin>>a>>b;
lena=strlen(a);
lenb=strlen(b);
for(int i=0;i<=lena-1;i++)
{
a1[lena-i]=a[i]-'0';
}
for(int i=0;i<=lenb-1;i++)
{
b1[lenb-i]=b[i]-'0';
}
if(lena<lenb)
{
swap(a1,b1);
flag=1;
}
else if(lena==lenb)
{
for(int i=lena;i>=1;i--)
{
if(a1[i]<b1[i])
{
swap(a1,b1);
flag=1;
break;
}
}
}
for(int lenc=1;lenc<=lena||lenc<=lenb;lenc++)
{
bw=a1[lenc]-b1[lenc]-jw;
if(bw<0)
{
bw=a1[lenc]+10-b1[lenc];
a1[lenc+1]-=1;
}
bw%=10;
c[lenc]=bw;
www=lenc;
}
if(flag==1)
{
cout<<"-";
}
for(int i=www;i>=1;i--)
{
if(c[i]==0)
{
www--;
}
else
{
break;
}
}
for(int i=www;i>=1;i--)
{
cout<<c[i];
}
return 0;
}
1171:
#include<bits/stdc++.h>
using namespace std;
char a1[888];
int a[888],c[888],lena,d,sb_nmsl_cnm;
int main()
{
cin>>a1;
lena=strlen(a1);
for(int i=0;i<=lena-1;i++)
{
a[i]=a1[i]-'0';
}
for(int j=2;j<=9;j++)
{
d=0;
for(int i=0;i<=lena-1;i++)
{
d=(d*10+a[i])%j;
}
if(d==0)
{
cout<<j<<" ";
sb_nmsl_cnm=1;
}
}
if(sb_nmsl_cnm==0)
{
cout<<"none";
}
return 0;
}
1172:
#include<bits/stdc++.h>
using namespace std;
int a[40000],n,len=1,jw;
int main()
{
cin>>n;
a[1]=1;
for(int i=2;i<=n;i++)
{
for(int j=1;j<=len;j++)
{
a[j]=a[j]*i+jw;
jw=a[j]/10;
a[j]%=10;
}
while(jw>0)
{
a[++len]+=jw;
jw/=10;
a[len]%=10;
}
}
for(int i=len;i>=1;i--)
{
printf("%d",a[i]);
}
return 0;
}
1174:
#include<bits/stdc++.h>
using namespace std;
char a1[100000],b1[100000];
int lena,lenb,a[100000],b[100000],c[100000],jw,bw,lenc;
int main()
{
cin>>a1>>b1;
lena=strlen(a1);
lenb=strlen(b1);
for(int i=0;i<=lena-1;i++)
{
a[lena-i]=a1[i]-'0';
}
for(int i=0;i<=lenb-1;i++)
{
b[lenb-i]=b1[i]-'0';
}
for(int i=1;i<=lenb;i++)
{
jw=0;
for(int j=1;j<=lena+1;j++)
{
c[i+j-1]+=a[j]*b[i]+jw;
jw=c[i+j-1]/10;
c[i+j-1]%=10;
}
}
lenc=lena+lenb;
while(c[lenc]==0&&lenc>1) lenc--;
for(int i=lenc;i>=1;i--)
{
cout<<c[i];
}
return 0;
}
1175:
#include<bits/stdc++.h>
using namespace std;
char a1[888];
int b=13,a[888],c[888],lena,d,sb_nmsl_cnm;
int main()
{
cin>>a1;
lena=strlen(a1);
for(int i=0;i<=lena-1;i++)
{
a[i]=a1[i]-'0';
}
for(int i=0;i<=lena-1;i++)
{
c[i]=(d*10+a[i])/b;
d=(d*10+a[i])%b;
}
for(int i=0;i<=lena-1;i++)
{
if(c[i]!=0)
{
sb_nmsl_cnm=i;
break;
}
}
for(int i=sb_nmsl_cnm;i<=lena-1;i++)
{
cout<<c[i];
}
cout<<endl<<d;
return 0;
}
明天发:
信息学奥赛一本通
1176,1184