• cogs 2060. 除法表达式


    2060. 除法表达式

    ★★   输入文件:baoquansl.in   输出文件:baoquansl.out   简单对比
    时间限制:1 s   内存限制:256 MB

    【题目描述】

    经过无尽的蘑菇和无尽的不知道错在哪里、不知道发生了什么只下,恭喜KZ成功的造出了数据!!可喜可贺可喜可贺

    给出一个这样的除法表达式:X1/X2/X3/X4/X5/X6..../Xk,

    正常的除法表达式是从左往右计算的,但是我们可以向其中添加括号,以改变它的运算顺序,如1/2/1/2=1/4  ,  (1/2)/(1/2)=1  ;

    那么,  给定一个除法表达式,能否通过添加括号使它的值为正整数?

     

    【输入格式】

    多行

    每行一个 除法表达式

    【输出格式】

    多行

    对应输入,分别输出“YES”(能为正整数)或“NO”(不能为正整数)

    【样例输入】

    8/4/7/10/99
    6/8/5/2/3
    

    【样例输出】

    YES
    NO
    

    【提示】

    3<=k<=10000 , 0<X<=0x7fffffff

    【来源】

    在此键入。

    思路:见紫书p311页。

    错因:输入卡我。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    char s[10001];
    int tot,num[10001];
    int gcd(int x,int y){
        return x==0?y:gcd(y%x,x);
    }
    bool judge(int* num){
        num[2]/=gcd(num[2],num[1]);
        for(int i=3;i<=tot;i++)
            num[2]/=gcd(num[2],num[i]);
        return num[2]==1;
    }
    int main(){
        freopen("baoquansl.in","r",stdin);
        freopen("baoquansl.out","w",stdout);
        while(scanf("%d",&num[1])==1){
            char ch;tot=1;
            while(scanf("%c",&ch)&&ch=='/')
                scanf("%d",&num[++tot]);
            if(judge(num))    cout<<"YES"<<endl;
            else cout<<"NO"<<endl;
        }
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    双写一致性的讨论
    webstorm设置新建vue文件的模板
    java基础类及方法
    中国大学零基础学Java语言练习题
    java基础继承
    java基础接口、继承、多态
    Windows、Mac 命令行启动程序(为了查看Electron打包后主进程日志)
    【Typescirpt】定义数字范围类型
    MRP
    Raid 学习
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7527419.html
Copyright © 2020-2023  润新知