PAT 部分A+B
正整数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 <iostream> #include <stdio.h> #include <string> using namespace std; int jc(int n){ if(n==0){ return 1; } int x=1,i=0; for(;i<n;i++){ x=x*10; } return x; } int main() { string a,b; int c,d; cin>>a>>c>>b>>d; int n=0,i=0,m=0; int le=a.length(),ln=b.length(); for(i=0;i<le;i++){ if((a[i]-'0')==c) { m=m+c*jc(n); n+=1; } } n=0; int x=0; for(i=0;i<ln;i++){ if((b[i]-'0')==d) { x=x+d*jc(n); n+=1; } } printf("%d\n",m+x); return 0; }
C++版的确实效率够高,4 ms时间足够,但是它代码量确实大啊
a,b,c,d=input().split() e,f=0,0 for i in range(len(a)): if a[i]==b: e+=1 for i in range(len(c)): if c[i]==d: f+=1 g,h=0,0 for i in range(e): g+=int(b)*10**i for i in range(f): h+=int(d)*10**i print(g+h)
同样的思路,Python的代码量就是C++的1/3了,但是效率和占用内存就惨不忍睹了,各有千秋。看来确实没有最好的语言,只有最适合的语言!