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
题目分析:用数组获取,scanf("%s%c%s%c",,&m,&n,&j,&k);会出现错误;scanf("%s %c %s %c",&m,&n,&j,&k);是正确的。
scanf("%s",&m); getchar(); scanf("%c",&n); getchar(); scanf("%s",&j); getchar(); scanf("%c",&k);
也是正确的。我用的编译工具是CB,计算指数的时候pow(10,i-1);出现了错误(可能是计算精度的问题,本应是100的计算成了99,但换成pow(10,2)就会计算正确)。但放在网站上却显示正确。看来是我的编译工具不行。
代码:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int main() { char m[11],n,j[11],k; int i,p,q,x; scanf("%s %c %s %c",&m,&n,&j,&k); /*scanf("%s",&m); getchar(); scanf("%c",&n); getchar(); scanf("%s",&j); getchar(); scanf("%c",&k);*/ i=0,p=0; while(m[i]!='\0') { if(m[i] == n) { p++; } i++; } x=n-'0'; q=0; for(i=p;i>0;i--) { q=q+x*pow(10,i-1); } i=0,p=0; while(j[i]!='\0') { if(j[i] == k) { p++; } i++; } x=k-'0'; int y; for(i=p;i>0;i--) { q=q+x*pow(10,i-1); } printf("%d",q); return 0; }