精华内容
下载资源
问答
  • n个数求和

    2020-10-30 21:52:09
    1333: n个数求和 1.描述 输入一个整数n和n个整数,输出这n个整数的和。 输入 输入有两行:第一行是一个正整数n,第二行是n个整数。 输出 输出一个整数,即n个数的和。输出单独占一行。 样例输入 3 7 3 2 样例输出 12...

    1333: n个数求和

    1.描述

    输入一个整数n和n个整数,输出这n个整数的和。
    输入
    输入有两行:第一行是一个正整数n,第二行是n个整数。
    输出
    输出一个整数,即n个数的和。输出单独占一行。
    样例输入
    3
    7 3 2
    样例输出
    12

    2.代码

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int j,a=0,b;
        scanf("%d",&j);
        int i;
     for(i=0;i<j;i++)
     {
         b=a;
         scanf("%d",&a);//b=a;-----;a=b+a;也可以改为----;b+=a;
         a=b+a;
     }
     printf("%d",a);
    return 0;
    }
    
    展开全文
  • N个数求和

    千次阅读 2019-03-03 11:10:00
    L1-009N个数求和(20 分) 本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。 输入格式: 输入第一行给出一个正整数N(≤100)。随后...

    L1-009 N个数求和 (20 分)

    本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。

    输入格式:

    输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。

    输出格式:

    输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。

    输入样例1:

    5
    2/5 4/15 1/30 -2/60 8/3
    

    输出样例1:

    3 1/3

    两个函数,一个是求最大公因数,一个是求最大公倍数。

    /*N个数求和*/
    #include <stdio.h>
    long long gcd(long long a,long long b)//求a和b的最大公因数 
    {
    	if(b==0)	
    		return a;
    	else
    		return gcd(b,a%b);
    }
    long long g_cd(long long a,long long b)//a和b的最大公倍数 
    {
    	long long num = gcd(a,b);
    	return a*b/num;
    }
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	long long  x,y,i,j;
    	scanf("%lld/%lld",&x,&y);
    	t--;
    	while(t--)
    	{
    		scanf("%lld/%lld",&i,&j);//依次求两个数 
    		long long num = g_cd(y,j);//得到两个分母的最小公倍 数 
    		x = (num/y)*x + (num/j)*i;//得到分子 
    		y = num;
    		num = gcd(x,y);
    		x = x/num;
    		y = y/num;	
    	}
    	 if(x%y==0)
    	 {
    	 	printf("%lld",x/y);
    	 }
    	 else if(x>y)
    	 {
    	 	long long n = x/y;
    	 	x = x - n*y;
    	 	printf("%lld %lld/%lld",n,x,y);
    	 }
    	 else
    	 {
    	 	printf("%lld/%lld",x,y);
    	 }
    	 return 0;
     }  

     

    展开全文
  • N个数字求和

    2018-10-03 18:17:11
    本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。 输入格式: 输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给...

    本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。

    输入格式:
    输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 …给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。

    输出格式:
    输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。

    输入样例1:

    5
    2/5 4/15 1/30 -2/60 8/3
    

    输出样例1:

    3 1/3
    

    输入样例2:

    2
    4/3 2/3
    

    输出样例2:

    2
    

    输入样例3:

    3
    1/3 -1/6 1/8
    

    输出样例3:

    7/24
    
    #include"iostream"
    #define MAXSIZE 100
    using namespace std;
    
    int simpest(int a,int b){
        if(a%b==0)
            return b;
        a=a%b;
        simpest(b,a);
    
    
    }
    
    int main(){
        int N,i,outn=0,outd=0,a;
        int nator[MAXSIZE];//分子
        int dator[MAXSIZE];//分母
        int decimal;//小数
        int integer;//整数
        char ch;
    
        cin>>N;
    
        for(i=0;i<N;i++)
            cin>>nator[i]>>ch>>dator[i];
    
        outn+=(nator[0]*dator[1]+dator[0]*nator[1]);
        outd+=dator[0]*dator[1];
        for(i=2;i<N;i++){
            outn=(outn*dator[i]+nator[i]*outd);
            outd=dator[i]*outd;
        }
        integer=outn/outd;
        if(outn>outd){
            outn=outn-outd;
        }
        a=simpest(outd,outn);
        outd=outd/a;
        outn=outn/a;
    
        cout<<integer<<' '<<outn<<'/'<<outd;
    }
    
    
    展开全文
  • 题目来源PTA 团体程序设计天梯赛-练习集L1-009N个数求和(20分)题目描述本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。输入格式:输入...

    题目来源

    PTA 团体程序设计天梯赛-练习集 L1-009 N个数求和 (20分)

    题目描述

    本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。

    输入格式:

    输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。

    输出格式:

    输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。

    样例:

    输入样例1:

    5

    2/5 4/15 1/30 -2/60 8/3

    输出样例1:

    3 1/3

    输入样例2:

    2

    4/3 2/3

    输出样例2:

    2

    输入样例3:

    3

    1/3 -1/6 1/8

    输出样例3:

    7/24

    思路

    从题目“分子/分母”的输入形式可以看出我们不能采用scanf和cin直接输输入值 而要采用字符输入再转换为数值

    计算过程中判断好符号 暴力通分直接加减即可

    防止通分过程超出长整型范围 最好每一步结果都约分

    我最开始暴力约分来着 发现会超时 就用欧几里得算法了 不麻烦也不会超时

    输出时注意题目要求的形式 想仔细一点每种条件怎么输出即可

    代码

    1 #include

    using namespace std;

    int n,o=1,oo; char x=1; //o-结果是否为非负数 oo-当前输入的有理数是否为非负数

    long long p,q,f=0,g=1,c;

    inline long long read(); //快读 由于分子分母间有‘/’分隔且分母一定是正数 标准快读模板即可完成

    inline int yue(long long a,long long b);//求a和b的最大公约数

    int main()

    {

    scanf("%d",&n);

    for(int i=1;i<=n;i++)

    {

    while(!(x>=48&&x<=57)&&x!='-')

    x=getchar();

    if(x=='-') oo=0;

    else oo=1; //判断当前输入的有理数是否为非负数

    p=read();

    q=read(); //以“|p/q|”形式读入当前有理数

    p*=g;

    f*=q;

    g*=q; //暴力通分 本题数据范围内没有超出长整型

    if((o&&oo)||(!o&&!oo)) //如果结果和当前输入有理数同号 只要分子绝对值部分相加即可

    f+=p;

    else if(o&&!oo) //如果结果为正 当前输入有理数为负 则需要比较结果与当前输入有理数的大小来确定此次运算后结果的符号

    {

    if(f>=p) //当前结果大于当前输入有理数的绝对值 结果仍为正数 以下同理

    f-=p;

    else

    o=0,f=p-f;

    }

    else if(!o&&oo)

    {

    if(f>=p)

    o=1,f-=p;

    else

    f=p-f;

    }

    int u=yue(f,g); //u为f和g的最大公约数

    f/=u;

    g/=u; //约分

    }

    if(o==0) printf("-"); //如果结果是负数 输出负号

    if(f==0) printf("0"); //如果结果是0 输出0

    else if(f%g==0) printf("%lld",f/g); //如果结果可以约分为整数

    else if(g%f==0) printf("1/%lld",g/f);//如果结果可以约分为“1/x”形式

    else if(f>g) //如果结果的分子大于分母 即结果为假分数 需要转化为带分数

    {

    printf("%lld ",f/g); //整数部分

    f%=g;

    printf("%lld/%lld",f,g); //分数部分

    }

    else

    printf("%lld/%lld",f,g); //如果结果为真分数

    return 0;

    }

    inline int yue(long long a,long long b) //欧几里得算法 亲测暴力约分会超时

    {

    if(a>b) c=a,a=b,b=c;

    while(a!=0) //

    {

    while(b>=a) //标准%运算比较慢 直接减

    b-=a;

    c=a,a=b,b=c;

    }

    return b;

    }

    inline long long read()

    {

    long long s=0;

    while(!(x>=48&&x<=57))

    x=getchar();

    while(x>=48&&x<=57)

    s*=10,s+=x-48,x=getchar();

    return s;

    }

    吐槽

    很少见到PTA这样AC红WA绿的平台了 属实清新脱俗:)

    b739ec46bb5c46d9c0aa4ce35ba1ea56.png

    关于找一找教程网

    本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

    本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

    [暴力+辗转相除法——N个数求和]http://www.zyiz.net/tech/detail-121247.html

    展开全文
  • 1039: n个数求和

    2020-04-04 19:55:24
    1039: n个数求和 时间限制: 1 Sec 内存限制: 30 MB 提交: 26757 解决: 17976 [状态] [讨论版] [提交] [命题人:admin] 题目描述 输入一个整数n和n个整数,输出这n个整数的和。 输入 输入有两行:第一行是一个正整数n...
  • PAT N个数求和

    2017-03-16 21:39:45
    N个数求和 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数“分子/分母”的...
  • L1-009 N个数求和

    2021-03-12 20:15:52
    L1-009 N个数求和 (20 分) 本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。 输入格式: 输入第一行给出一个正整数N(≤100)。随后...
  • N个数求和(PTA)

    千次阅读 2019-10-02 10:14:47
    7-1 N个数求和 (20 分) 本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。 输入格式: 输入第一行给出一个正整数N(≤100)...
  • 天梯赛 N个数求和

    2018-03-29 21:10:41
    N个数求和时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数“分子/分母”的形式给出的,你输出的和也必须是有理数的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,025
精华内容 2,810
热门标签
关键字:

n个数求和