1016. 部分A+B (15)

 

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)

题目描述

正整数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的值。

输入例子:

3862767 6 13530293 3

输出例子:

399

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main(){
 5     long a = 3862767;
 6     
 7     int da= 6;
 8     long b = 13530293;
 9     
10     int db= 3;
11     int n=0;
12     int i=1;
13     int suma=0;
14     int sumb=0;
15     cin>>a>>da>>b>>db;
16     long a2=a;
17     long b2 = b;
18     for(i=1; i<=a2*1; i=i*10){
19         if(a%10 == da){            n++;
20             suma = suma*10+da;
21         }            
22         a /=10;
23     }
24     i=0;
25     for(i=1; i<=b2*1; i=i*10){
26         if(b%10 == db){            
27             sumb = sumb*10+db;
28         }
29             
30         b /=10;
31     }
32     
33     cout<<suma+sumb;
34     
35     return 0;
36 }

 用字符串解法:

 1 #include <iostream>
 2 #include <string.h>
 3 using namespace std;
 4 int main(){
 5     char A[] = "3862767";
 6     int Da = 6;
 7     char B[] =  "13530293";
 8     int Db =  3;
 9     int sum =0;
10     int sumb =0;
11     int i;
12     cin>>A>>Da>>B>>Db;
13     for(i=0;i<=strlen(A);i++){
14         if(A[i]-'0' == Da)
15             sum = sum*10+Da;
16     }
17     for(int i=0;i<=strlen(B);i++){
18         if(B[i]-'0' == Db)
19             sumb = sumb*10+Db;
20     }
21 
22         cout<<sum+sumb<<endl;
23     
24     return 0;
25 }

 

posted @ 2017-07-20 13:10  葛杨杨  阅读(163)  评论(0)    收藏  举报