凑除法表达式,添加括号,使其结果为整数
本帖最后由 独一无② 于 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");
}
} (1/(1/3))/1/(3/7)? 楼上的已经帮你解决了,我不知道这个有什么用途,楼主可以透露下么 老衲不洗澡 发表于 2016-2-2 16:47
(1/(1/3))/1/(3/7)?
666,我没想到{:5_100:} ligen超越 发表于 2016-2-2 18:40
楼上的已经帮你解决了,我不知道这个有什么用途,楼主可以透露下么
没什么用途,就是acm上的竞赛题目,给出题目,写出相应符合要求的代码
页:
[1]