鱼C论坛

 找回密码
 立即注册
查看: 1894|回复: 4

凑除法表达式,添加括号,使其结果为整数

[复制链接]
发表于 2016-2-2 13:25:42 | 显示全部楼层 |阅读模式
25鱼币
本帖最后由 独一无② 于 2016-2-2 13:27 编辑

有一个除法表达式,形如:x1/x2/x3/x4.....
输入一个表达式,添加括号,使其的表达式结果为整数。可以输出yes,不行输出no

百度了一下,看到了一篇博客解法:
http://blog.sina.com.cn/s/blog_adca050401018h0z.html

但是对其原理还是不太明白。还有一个疑问,不知道是不是我题目理解错了
我找了一个例子:1/3/1/3/7
输入这个例子应该是输出no吧,应该没什么可以整除7了,但是他的代码结果却是yes

以下博客代码
#include<stdio.h>
#include<string.h>
int gcd(int a,int b)//公约数函数a<b(自己默认)
{
         int t;
         if(a>b)
         {
                  t=a;
                  a=b;
                  b=t;
         }
         while(a!=0)
         {
                  t=b;
                  b=a;
                  a=t%b;
         }
         return b;
}


char s[1100005];//注意字符串的程度,因为很大,所以放在外面宏定义
int main()
{
         int a[10005],i,j,k,s2,n,len,sum;
         while(gets(s))
         {
                  len=strlen(s);
                  if(len==1)
                  {
                          printf("YES\n");
                          continue;
                  }
                  j=0;sum=0;
                  for(i=0;i<len;i++)//把字符串里的数字一一取出来
                  {
                     if(s[i]!='/')
                             sum=sum*10+(s[i]-'0');
                     else
                     {
                             a[j++]=sum;
                             sum=0;
                     }
                  }         //这里是我自己添加的,发现最后一位数没有存进去 
                  a[j]=sum; //不知道最后这一位是不是可以省的 
                  s2=a[1]/gcd(a[0],a[1]);
                  for(i=2;i<=j;i++)
                  {
                    s2=s2/gcd(s2,a[i]);
                    if(s2==1)
                      break;
                  }
                  if(s2==1)
                    printf("YES\n");
                  else
                    printf("NO\n");
        
         }
}

最佳答案

查看完整内容

(1/(1/3))/1/(3/7)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-2 13:25:43 | 显示全部楼层
(1/(1/3))/1/(3/7)?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-2-2 18:40:25 | 显示全部楼层
楼上的已经帮你解决了,我不知道这个有什么用途,楼主可以透露下么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-2 20:15:27 | 显示全部楼层

666,我没想到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-2-2 20:16:31 | 显示全部楼层
ligen超越 发表于 2016-2-2 18:40
楼上的已经帮你解决了,我不知道这个有什么用途,楼主可以透露下么

没什么用途,就是acm上的竞赛题目,给出题目,写出相应符合要求的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 18:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表