题目链接:

http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=1013

描述

给出一个这样的除法表达式:X1/X2/X3/···/Xk,其中Xi是正整数。除法表达式应当按照从左到右的顺序求和,例如表达式1/2/1/2的值为1/4。但是可以在表达式中嵌入括号以改变计算顺序,例如表达式(1/2)/(1/2)的值为1.

输入
首先输入一个N,表示有N组测试数据,
每组数据输入占一行,为一个除法表达式,
输入保证合法。
使表达式的值为整数。k<=10000,Xi<=100000000.
输出
输出YES或NO
样例输入
1
1/2/1/2
样例输出
YES
 /*
问题
给出一个除法表达式x1/x2/x3/.../xk,其中xi是正整数,问能够通过在表达式中嵌入括号以改变计算顺序,使得表达式的值为1 解题思路
直观的想法暴力,但是随即又想暴力的方法是不行的,因为嵌入括号可以是双重嵌套的。
看了解析,先将式子变成E=x1/x2/x3/.../xk=(x1/x3/.../xk)/x2,现在的问题变成了判断E是否为整数
采用直接约分,那么每次约掉xi和x2的最大公约数,最后看x2是否为1即可。
这类题目刚开始看的时候好像无从下手,但是仔细观察将式子经过适当的变型,就可以将问题转化成熟悉的问题,进而求解。 具体解法,采用scanf将表达式读入,预处理(将'/'变成' ')后将其赋值为一个string类,再采用流式一个一个读入数字存入x,经过判断
输出对应结果即可。 易错分析,刚开始读入的时候以为都是一位数的数字,后来猛地发现可以是多位数字,这种错误真的是,多读题很重要。
*/
#include<cstdio>
#include<cstring>
#include<string>
#include<cctype>
#include<vector>
#include<iostream>
#include<sstream>
using namespace std; const int N=;
char s[N];
int x[N]; int judge(int *x,int len);
int gcd(int a,int b){
return b==?a:gcd(b,a%b);
}
int lcm(int a,int b){
return a/gcd(a,b)*b;
} vector<int> vx;
string vs;
int main()
{
int T,len,i,j,k,vxx;
scanf("%d",&T);
while(T--){
scanf("%s",s);
len=strlen(s);
for(i=;i<len;i++){
if(s[i] == '/')
s[i] = ' ';
}
vs=s;
stringstream ss(vs);
j=;
while(ss >> vxx) x[j++]=vxx; /*for(i=0;i<j;i++)
printf("%d ",x[i]);
printf("\n");*/ if(judge(x,j))
printf("YES\n");
else
printf("NO\n");
}
return ;
} int judge(int *x,int len)
{
x[] /= gcd(x[],x[]);
for(int i=;i<len;i++)
x[] /= gcd(x[i],x[]);
return x[] == ;
}

NYOJ 1013 除法表达式(欧几里德算法+唯一分解定理)的更多相关文章

  1. UVa10375:选择与除法(唯一分解定理)

    The binomial coefficient C(m,n) is defined as Given four natural numbers p, q, r, and s, compute the th ...

  2. B - Common Divisors (codeforces)数论算法基本定理,唯一分解定理模板

    You are given an array aa consisting of nn integers. Your task is to say the number of such positive ...

  3. NYOJ-1013除法表达式

    除法表达式 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 给出一个这样的除法表达式:X1/X2/X3/···/Xk,其中Xi是正整数.除法表达式应当按照从左到右的顺 ...

  4. 欧几里德算法及其扩展(推导&&模板)

    有关欧几里德算法整理: 1.一些相关概念: <1>.整除性与约数: ①一个整数可以被另外一个整数整除即为d|a(表示d整除a,通俗的说是a可以被d整除),其含义也可以说成,存在某个整数k, ...

  5. codeforces C. Primes and Multiplication(快速幂 唯一分解定理)

    题目链接:http://codeforces.com/contest/1228/problem/C 题解:给定一个函数f,g,题目有描述其中的表达式含义和两者之间的关系. 然后计算: 首先把给定的x用 ...

  6. Sicily1099-Packing Passengers-拓展欧几里德算法

    最终代码地址:https://github.com/laiy/Datastructure-Algorithm/blob/master/sicily/1099.c 做这题的时候查了别人的做法花了半天都没 ...

  7. 欧几里德算法gcd及其拓展终极解释

    这个困扰了自己好久,终于找到了解释,还有自己改动了一点点,耐心看完一定能加深理解   扩展欧几里德算法-求解不定方程,线性同余方程. 设过s步后两青蛙相遇,则必满足以下等式: (x+m*s)-(y+n ...

  8. hdu1215 正整数唯一分解定理应用

    B - (例题)因子和 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     64 ...

  9. POJ - 1845 G - Sumdiv (唯一分解定理)

    Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S m ...

随机推荐

  1. C# DataGridView中单元格Cell改变事件

    DataGridView控件中的各种事件都无法直接响应Cell中内容的变化,包括KeyPress等事件,可以采用下面方法 private void dataGridViewBarcode_Editin ...

  2. C# 读取资源文件.resx 中的xml资源

    主要是以字符串的形式来读取xml,然后通过遍历读取节点,通过节点属性名称获取属性值 /// <summary> /// 初始化OPC参数配置 /// </summary> // ...

  3. .net中的SelectList在Html.DropdownList中的使用

    .net中的SelectList可以用于前端下拉框的内容填充 譬如:Html.DropdownList(下拉框标签名称, SelectList实例) 实际上,上述Html.DropdownList的第 ...

  4. Strust2总结

    1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前端控制器模式] MV ...

  5. Tomcat安装及调试

    Web服务器的作用 1.接收客户端的请求 2.给客户端作出响应 我们也可以自己手写Web服务器,但是那样太麻烦,而且难度很大,所以我们可以 使用目前应用最广泛的Tomcat服务器 常见的Web服务器 ...

  6. Python zip() 与 map()的用法

    zip(): 将多个可迭代对象按序取出相同索引的元素(当长度最小的对象为准), 组成一个个元组,并封装在一个可迭代对象中 a = [1, 2, 3, 4] b = [5, 6, 7, 8] c = z ...

  7. Spring学习笔记1——IOC: 尽量使用注解以及java代码

    在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IO ...

  8. linux下时间问题---date

    显示日期 显示日期和时间

  9. @transactional作用和事务

    今天在博客园看到有发布spring的注解,留意到@transactional这个注解.立马就百度.学习了 使用这个注解的类或者方法表示该类里面的所有方法或者这个方法的事务由spring处理,来保证事务 ...

  10. golang 闭包求斐波那契数列

    题目是Go指南中的闭包求斐波那契数列 package main import "fmt" // 返回一个"返回int的函数" func fibonacci() ...