math
Posted a-blog-of-taojiayi-2003
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了math相关的知识,希望对你有一定的参考价值。
lucas:
T2:
问题描述
给你一个除法表达式:X1/X2/X3/X4……/Xk 其中Xi是正整数并且 Xi <= 2 000 000 000( 1<=i<=k,k<=10 000 )。除法表达式应当按照从左到右的顺序求结果,例如:表达式1/2/1/2的值是1/4,你可以在表达E中嵌入括号改变计算顺序,例如表达式(1/2)/(1/2)的值是1。现在给你一个除法表达式E,计算是否能够通过加括号(或者不加)得到表达式E‘ ,E‘的值为整数。
输入文件
输入数据包括多组数据,每组数据占一行,给出的是题目描述的表达式E,E中不含空格。
输出文件
每组测试数据占一行如果能找到题目中描述的E‘ 则输出"YES"(不含引号),否则输出"NO" (不含引号)。
样例输入
1/2/1/2
2/3
样例输出
YES
NO
限制与约定
时间限制:1s
空间限制:128MB
思路 :第二个放在分母上,其他的都可以放在分子上。。。超int。。。
std:
#include<cstdio> #include<cstring> #include<algorithm> #define LL long long using namespace std; const int maxn=1e4+5; char ch[maxn*15]; int a[maxn],temp,k; inline int read() int a=0; while(ch[temp]<‘0‘||‘9‘<ch[temp])temp++; while(‘0‘<=ch[temp]&&ch[temp]<=‘9‘) a=(a<<1)+(a<<3)+ch[temp++]-‘0‘; return a; int main() while(scanf("%s",ch+1)>0) int len=strlen(ch+1); temp=1;k=0; for(int i=1;ch[temp]!=‘\0‘;i++,k++) a[i]=read(); //printf("%d ",a[i]); for(int i=1;i<=k;i++) if(i!=2) int d=__gcd(a[i],a[2]);//使用gcd约分,注意别超int。。。 a[2]/=d;//第二个数一定是分母 printf(a[2]==1?"YES\n":"NO\n"); return 0;
以上是关于math的主要内容,如果未能解决你的问题,请参考以下文章