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
二、Tips
Tips: int转char*的函数:itoa不是标准C/C++语言函数,所以不能直接导入stdlib.h然后调用。提交后会编译失败。可以直接自己实现一下itoa函数,不想实现的,直接百度。当然,要是在输入时就把A、B当作字符串输入,就不用考虑这个问题啦。
三、代码
#include <stdio.h>
#include <math.h>
#include <string.h>
int l(
int n){
if(n==
0){
return 1;
}
int s =
0 ;
while(n!=
0){
n/=
10;
s++;
}
return s;
}
char* itoa(
int num,
char*
str,
int radix){
char index[]=
"0123456789ABCDEF";
unsigned unum;
int i=
0,j,k;
if(radix==
10&&num<
0){
unum=(unsigned)-num;
str[i++]=
'-';
}
else
unum=(unsigned)num;
do{
str[i++]=
index[unum%(unsigned)radix];
unum/=radix;
}
while(unum);
str[i]=
'\0';
if(
str[
0]==
'-')
k=
1;
else
k=
0;
char temp;
for(j=k;j<=(i-
1)/
2;j++){
temp=
str[j];
str[j]=
str[i-
1+k-j];
str[i-
1+k-j]=temp;
}
return str;
}
int p(
int a,
int d) {
int sum =
0;
int n =
0;
char c[
11];
itoa(a,c,
10);
for (
int i =
0; i < strlen(c); i++) {
if(c[i]-
'0'==d){
sum=
sum*
10+d;
}
}
return sum;
}
int main(){
int A,DA,B,DB;
scanf(
"%d %d %d %d",&A,&DA,&B,&DB);
printf(
"%d\n",p(A,DA)+p(B,DB));
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1260745.html