题目描述
正整数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的值。
样例输入 Copy
3862767 6 13530293 3
3862767 1 13530293 8
样例输出 Copy
399
0
判断这,判断那的。
#include<bits/stdc++.h>
using namespace std;
int put(int len,int n,string m){//自定义一个函数,查找一段数中,一个数出现多少次
int t=0;
int q=0;
for(int i=0;i<len;i++){
if(m[i]-'0'==n){
t++;
}
}
return t;
}
int pt(int w){//判断出现次数,返回多少位1
if(w==0)
return 0;
if(w==1)
return 1;
if(w==2)
return 11;
if(w==3)
return 111;
if(w==4)
return 1111;
if(w==5)
return 11111;
if(w==6)
return 111111;
if(w==7)
return 1111111;
if(w==8)
return 11111111;
if(w==9)
return 111111111;
}
int main(){
int x,y;
string x1;
string y1;
cin>>x1>>x>>y1>>y;
int t=0,q=0;
int lenx=x1.length();//求长度
int leny=y1.length();
int tx=put(lenx,x,x1),ty=put(leny,y,y1);//tx等于x1中x出现的次数....
cout<<pt(tx)*x+pt(ty)*y;//比如2出现四次,就2*1111,四个1;
return 0;
}
把自定义函数pt改改
#include<bits/stdc++.h>
using namespace std;
int put(int len,int n,string m){
int t=0;
int q=0;
for(int i=0;i<len;i++){
if(m[i]-'0'==n){
t++;
}
}
return t;
}
int pt(int w){
int t=0;
for(int i=0;i<w;i++){
t*=10;
t=t+1;
}
return t;
}
int main(){
int x,y;
string x1;
string y1;
cin>>x1>>x>>y1>>y;
int t=0,q=0;
int lenx=x1.length();
int leny=y1.length();
int tx=put(lenx,x,x1);
int ty=put(leny,y,y1);
cout<<pt(tx)*x+pt(ty)*y;
return 0;
}