独一无② 发表于 2016-2-2 13:25:42

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

本帖最后由 独一无② 于 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;//注意字符串的程度,因为很大,所以放在外面宏定义
int main()
{
       int a,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!='/')
                             sum=sum*10+(s-'0');
                     else
                     {
                             a=sum;
                             sum=0;
                     }
                  }         //这里是我自己添加的,发现最后一位数没有存进去
                  a=sum; //不知道最后这一位是不是可以省的
                  s2=a/gcd(a,a);
                  for(i=2;i<=j;i++)
                  {
                  s2=s2/gcd(s2,a);
                  if(s2==1)
                      break;
                  }
                  if(s2==1)
                  printf("YES\n");
                  else
                  printf("NO\n");
       
       }
}

老衲不洗澡 发表于 2016-2-2 13:25:43

(1/(1/3))/1/(3/7)?

ligen超越 发表于 2016-2-2 18:40:25

楼上的已经帮你解决了,我不知道这个有什么用途,楼主可以透露下么

独一无② 发表于 2016-2-2 20:15:27

老衲不洗澡 发表于 2016-2-2 16:47
(1/(1/3))/1/(3/7)?

666,我没想到{:5_100:}

独一无② 发表于 2016-2-2 20:16:31

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

没什么用途,就是acm上的竞赛题目,给出题目,写出相应符合要求的代码
页: [1]
查看完整版本: 凑除法表达式,添加括号,使其结果为整数