Programming Ability Test学习 1016. 部分A+B (15)

1016. 部分A+B (15)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。

现给定A、DA、B、DB,请编写程序计算PA + PB

输入格式:

输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010

输出格式:

在一行中输出PA + PB的值。

输入样例1:
3862767 6 13530293 3
输出样例1:
399
输入样例2:
3862767 1 13530293 8
输出样例2:
0




#include <stdio.h>
#include <math.h>
#include<string.h>
#include<stdlib.h>

char kobe[11];

int cp;
int j;
int hh;

//2字符串相加 9999+1=10000
void main1(char *A,char *B)
{
char str1[20],str2[20];
char str4[20],str5[20];
char strtt[15];
memset(str1,0,sizeof(str1));
memset(str2,0,sizeof(str2));
strcpy(str1,A);
strcpy(str2,B);

memset(str4,0,sizeof(str4));
memset(str5,0,sizeof(str5));
memset(strtt,0,sizeof(strtt));
int a,b,c;
hh=0;

a=strlen(str1);
b=strlen(str2);
if(a>=b){
strcpy(str4,str1);
strcpy(str5,str2);
}
else{
strcpy(str4,str2);
strcpy(str5,str1);
}
cp=1;
j=strlen(str5)-1;
int strlen1=strlen(str4);
int strlen2=strlen(str5);
for(int i=strlen1-1;i>=strlen1-strlen2;i--)
{
int temp,temp1,temp2;
temp1=str4[i]-'0';

temp2=str5[j]-'0';
temp=temp1+temp2;
if(cp==-1)temp++;
if(temp>=10)
{
temp=temp%10;
str4[i]=temp+'0';
cp=-1;
}
else
{
str4[i]=temp+'0';
cp=1;
}
j--;
}


if(cp==-1)
{
for(int i=strlen(str4)-strlen(str5)-1;i>=0;i--)
{
int temp3=str4[i]-'0';
if(cp==-1)temp3=temp3+1;
if(temp3>=10)cp=-1;
else cp=1;
temp3=temp3%10;
str4[i]=temp3+'0';
}
}

if(cp==-1)
{
strtt[0]='1';
strcat(strtt,str4);
strcpy(str4,strtt);
}
int xiexie=0;


if(str4[0]=='0'&&strlen(str4)>1)
{
for(int i=0;i<strlen(str4);i++)
if(str4[i]=='0') xiexie++;
if(xiexie==strlen(str4))strcpy(str4,"0");
else{
int xx=0;
while(str4[xx]=='0'&&str4[xx+1]=='0'&&str4[xx+1]!='')xx++;
char cp9[100];
memset(cp9,0,sizeof(cp9));int yy=0;
for(int i=xx+1;i<strlen(str4);i++)cp9[yy++]=str4[i];
strcpy(str4,cp9);
}
}
strcpy(kobe,str4);


}


int main()
{
char a[100];
char a1[100];
char b[100];
char b1[100];
memset(a,0,sizeof(a));
memset(a1,0,sizeof(a1));
memset(b,0,sizeof(b));
memset(b1,0,sizeof(b1));
int Da,Db;
scanf("%s %d %s %d",a,&Da,b,&Db);
int Da1=0,Db1=0;
char s1=Da+'0';
char s2=Db+'0';
for(int i=0;i<strlen(a);i++)
if(a[i]==s1)Da1++;
for(int i=0;i<strlen(b);i++)
if(b[i]==s2)Db1++;

if(Da1==0)strcpy(a1,"0");
else{
for(int i=0;i<Da1;i++)
a1[i]=s1;}
if(Db1==0)strcpy(b1,"0");
else{
for(int i=0;i<Db1;i++)
b1[i]=s2;}

main1(a1,b1);
puts(kobe);

// puts(a1);puts(b1);


// printf("%d %d ",Da1,Db1);
/*puts(a);
puts(b);
printf("%d %d ",Da,Db);*/

return 0;
}



原文地址:https://www.cnblogs.com/a842297171/p/4488128.html