• COJ1127(芝麻开门)


    题目链接

    题目大意,给定一个整数表达式A1/A2/A3/.../An,('/'为除号1<=n<=10000,1<=Ai<=1000000000),问是否能通过添加括号使得表达式的值为整数。咋一看似乎没思路,但仔细想,不难发现这里存在最优策略,最优策略是用一个括号将表达式变成A1/(A2/A3/.../An)。证明如下:n为1时,直接输出"YES",n大于1时,首先,A2一定为分母,无论如何添加括号都无法改变这个事实,其次,按照上面的策略加括号后,只有A2为分母,所以这是个最优策略。有了最优策略后,我们需要做的就是不断约分(求最大公约数),看能否将其约为1,若能,表达式结果能为整数,否则不能。

    View Code
     1 #include <stdio.h>
     2 int gcd(int a,int b)
     3 {
     4     int t;
     5     while(a%b)  t=a,a=b,b=t%b;
     6     return b;
     7 }
     8 int main()
     9 {
    10     int i,n,a,b;
    11     while(~scanf("%d",&n))
    12     {
    13         scanf("%d",&a);
    14         if(n==1)
    15         {
    16             printf("YES\n");
    17             continue;
    18         }
    19         scanf("%d",&b);
    20         b/=gcd(a,b);
    21         for(i=2;i<n;i++)
    22         {
    23             scanf("%d",&a);
    24             if(b-1) b/=gcd(a,b);
    25         }
    26         if(b-1) printf("NO\n");
    27         else    printf("YES\n");
    28     }
    29     return 0;
    30 }
  • 相关阅读:
    Vue.js的组件化思想--下
    Vue.js的组件化思想--上
    Git常用命令总结
    vue基础语法
    ES6基础语法
    Vue笔记
    Vue的基本使用(一)
    es6的基本用法
    Django-admin管理工具
    Django组件-中间件
  • 原文地址:https://www.cnblogs.com/algorithms/p/2445278.html
Copyright © 2020-2023  润新知