PAT乙级1016.部分A+B(15 分)

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

现给定 A、D?A??、B、D?B??,请编写程序计算 P?A??+P?B??。

输入格式:

输入在一行中依次给出 A、D?A??、B、D?B??,中间以空格分隔,其中 0。

输出格式:

在一行中输出 P?A??+P?B?? 的值。

输入样例 1:

3862767 6 13530293 3

输出样例 1:

399

输入样例 2:

3862767 1 13530293 8

输出样例 2:

0
#include<iostream>
#include<cmath>
#include<string>
#include<stdlib.h>
using namespace std;

int count(string s, char a)
{
    int num = 0;
    for (int i = 0; i < s.length(); i++)
    {
        if (s[i] == a)
            num++;
    }
    return num;
}

long P(char a, int num)
{
    long sum = 0;
    while (num--)
    {
        sum += pow(10, num) * (a - ‘0‘);
    }
    return sum;
}
int main()
{
    string A, B;
    char DA, DB;
    int numA, numB;
    long PA, PB;
    cin >> A >> DA >> B >> DB;
    numA = count(A, DA);
    numB = count(B, DB);
    PA = P(DA, numA);
    PB = P(DB, numB);
    cout << PA + PB << endl;
    system("pause");
    return 0;
}
 

原文地址:https://www.cnblogs.com/denghui666/p/9501111.html

时间: 2024-08-29 02:45:22

PAT乙级1016.部分A+B(15 分)的相关文章

PAT乙级 1016. 部分A+B (15)

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

PAT乙级:1057 数零壹 (20分)

PAT乙级:1057 数零壹 (20分) 题干 给定一串长度不超过 105 的字符串,本题要求你将其中所有英文字母的序号(字母 a-z 对应序号 1-26,不分大小写)相加,得到整数 N,然后再分析一下 N 的二进制表示中有多少 0.多少 1.例如给定字符串 PAT (Basic),其字母序号之和为:16+1+20+2+1+19+9+3=71,而 71 的二进制是 1000111,即有 3 个 0.4 个 1. 输入格式: 输入在一行中给出长度不超过 105.以回车结束的字符串. 输出格式: 在

PAT 乙级 1016

1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 5 int main() { 6 int a = 0, da = 0; 7 int b = 0, db = 0; 8 cin >> a >> da >> b >> db; 9 int cnta = 0, cntb = 0; 10 int chu = a, yu = 0; 11 while (chu >

1016 部分A+B (15分)

正整数 A 的"*D**A(为 1 位整数)部分"定义为由 A* 中所有 *D**A* 组成的新整数 PA.例如:给定 A=3862767,DA=6,则 A 的"6 部分"*P**A* 是 66,因为 A 中有 2 个 6. 现给定 A.DA.B.DB,请编写程序计算 PA+PB. 输入格式: 输入在一行中依次给出 A.DA.B.DB,中间以空格分隔,其中 0<A,B<1010. 输出格式: 在一行中输出 PA+PB 的值. 输入样例 1: 386276

PAT:1016. 部分A+B (15) AC

当做字符串处理#include<stdio.h> #include<string.h> int main() { char A[120],B[120],ca,cb; int iA=0,iB=0; scanf("%s %c %s %c",A,&ca,B,&cb); int lenA=strlen(A),lenB=strlen(B); int addA=0,addB=0; while(lenA!=-1) //遍历每一位,是目标数就处理 { int t

PAT乙级-1056. 组合数的和(15)

给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字.要求所有可能组合出来的2位数字的和.例如给定2.5.8,则可以组合出:25.28.52.58.82.85,它们的和为330. 输入格式: 输入在一行中先给出N(1<N<10),随后是N个不同的非0个位数字.数字间以空格分隔. 输出格式: 输出所有可能组合出来的2位数字的和. 输入样例: 3 2 8 5 输出样例: 330 分析:两位数,根据排列组合,每个数出现(n-1)次个位 , (n-1)次十位 sum=(a*10+a)*

【PAT】B1041 考试座位号(15 分)

/* */ #include<stdio.h> #include<algorithm> using namespace std; struct stu{ char number[18]; int shi,kao; }arr[1005]; bool cmp(stu A,stu B){ return A.shi<B.shi; } int main(){ int N,N1,temp; scanf("%d",&N); for(int i=1;i<=N

【PAT】B1021 个位数统计(15 分)

#include<cstdio> struct ppp{ int num; int tim; }pp[10]; int main(){ int flag=0; for(int i=0;i<10;i++){ pp[i].num=i; pp[i].tim=0; } int N[1000]={0},wei=0; while(scanf("%1d",&N[wei])!=EOF){ pp[N[wei]].tim++; wei++; } for(int i=0;i<

PAT Basic 1056 组合数的和 (15 分)

给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则可以组合出:25.28.52.58.82.85,它们的和为330. 输入格式: 输入在一行中先给出 N(1 < N < 10),随后给出 N 个不同的非 0 个位数字.数字间以空格分隔. 输出格式: 输出所有可能组合出来的2位数字的和. 输入样例: 3 2 8 5 输出样例: 330 #include <iostream> #in