zoukankan      html  css  js  c++  java
  • PAT乙级真题1016.部分A+B(15)(2016-4-28)

    原题:
    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 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

    思路:

    这道题的思路挺清晰,
    先从A,B 中取出PA,PB,
    然后把PA与PB做加法;

    重点就在如何计算字符串的加法;

     code:

     1 #include<stdio.h>
     2 #include<string.h>
     3 int Find (char *,char *,char);
     4 int f(int );
     5 int main()
     6 {
     7     char A[11],B[11];
     8     char Aa[11],Bb[11];
     9     char Pa,Pb;
    10     int na,nb,n=0,i,j;
    11     long sum=0;
    12     scanf("%s %c %s %c",A,&Pa,B,&Pb);
    13     na=Find (A,Aa,Pa);
    14     nb=Find (B,Bb,Pb);
    15     for(i=na,j=nb;i>=0&&j>=0;i--,j--)//从字符串末尾开始,相同数位相加
    16     {
    17         sum+=(long)(f(n)*(Pa-'0'))+(long)(f(n)*(Pb-'0'));
    18         n++;
    19     }
    20     if(i>j)//多出的数位相加
    21     {
    22         while(i>=0)
    23         {
    24             sum+=f(n)*(long)(Pa-'0');
    25             i--;
    26             n++;
    27         }
    28     }
    29     else if(j>i)
    30     {
    31         while(j>=0)
    32         {
    33             sum+=f(n)*(long)(Pb-'0');
    34             j--;
    35             n++;
    36         }
    37     }
    38     printf("%ld",sum);
    39     return 0;
    40 }
    41 int Find (char *a,char *b,char m)//找出PA,并返回自符串长度
    42 {
    43     int i,j;
    44     int na;
    45     na=strlen(a);
    46     for(i=0,j=0,b[0]='';i<=na;i++)
    47     {
    48         if(a[i]==m)
    49         {
    50             b[j]=a[i];
    51             j++;
    52         }
    53     }
    54     b[j]='';
    55     return j-1;
    56 }
    57 int f(n)//确定第n位字符的数位,n=0时,为个位
    58 {
    59     if(n==0)
    60         return 1;
    61     else
    62         return 10*f(n-1);
    63 }
  • 相关阅读:
    JSON的在javascript中的常用方法
    JUQERY判断变量是数组还是对象
    JS正则表达式大全
    jquery对事件的监听方法addEventListener()
    Hive安装(二)之表不见了
    Hive安装(一)之环境配置
    Java锁(一)之内存模型
    遗传算法(二)之组卷算法
    Ubuntu 14 Trusty安装hue
    算法(三)粒子群算法之算法分类
  • 原文地址:https://www.cnblogs.com/fengyucode/p/5444887.html
Copyright © 2011-2022 走看看