• PAT 部分A+B


    正整数​​A的“DA(为 1 位整数)部分”定义为由A中所有DA组成的新整数PA,例如:给定A=3862767,D=6,则A的“6 部分”P是 66,因为A中有 2 个 6。

    现给定A,D,B,D,请编写程序计算P+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
    ",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了,但是效率和占用内存就惨不忍睹了,各有千秋。看来确实没有最好的语言,只有最适合的语言!

  • 相关阅读:
    [Effective C++ --012]复制对象时勿忘其每一个成分
    [016]转--C++拷贝构造函数详解
    Oracle给用户权限
    Oracle清屏方法
    Oracle 创建数据库、表用户及权限设置代码
    第三人称角色移动及自由移动视野(RigidBody实现)
    unity3D延迟函数
    第一人称角色移动及自由移动视野(CharacterController实现)
    u3d场景载入
    u3D自动寻路2
  • 原文地址:https://www.cnblogs.com/andrew3/p/12632500.html
Copyright © 2020-2023  润新知