UVA - 10976 分数拆分】的更多相关文章

题目链接:https://vjudge.net/contest/210334#problem/C 题目大意: It is easy to see that for every fraction in the form 1 k (k > 0), we can always find two positive integers x and y, x ≥ y, such that: 1 k = 1 x + 1 y Now our question is: can you write a program…
题意: 给定正整数k(1<=k <= 10000),找出所有正整数 x>= y, 使得1/k = 1/x + 1/y 分析: 因为 x >= y 所以 1/x <= 1/y 因为 1/x + 1/y = 1/k 所以 1/k <= 2/y 即 y <= 2k 且 y >= k + 1 枚举y算出x即可 因为要避免浮点数运算, 所以可以通过1/k - 1/y  = 1/x 推出 x = (k*y)/(k-y). 那么只要k*y可以整除(k-y), x就是整数,…
题目传送门 /* x>=y, 1/x <= 1/y, 因此1/k - 1/y <= 1/y, 即y <= 2*k */ #include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstring> #include <string> #include <map> #include <…
分数拆分 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 现在输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y.   输入 第一行输入一个整数n,代表有n组测试数据.接下来n行每行输入一个正整数k 输出 按顺序输出对应每行的k找到所有满足条件1/k=1/x+1/y的组合 样例输入 2 2 12 样例输出 1/2=1/6+1/3 1/2=1/4+1/4 1/12=1/156+1/13 1/12=1/84+1/14 1/12=1/60+1/15…
UVA 725 题意:0~9十个数组成两个5位数(或0开头的四位数),要求两数之商等于输入的数据n.abcde/fghij=n. 思路:暴力枚举,枚举fghij的情况算出abcde判断是否符合题目条件.(注意前导零的判断) 枚举的方法为 for(int i=1234;i<=100000/n;i++){}  #include<cstdio> #include<cstring> ]; bool check(int a,int b) { memset(num,,sizeof num…
分数拆分 时间限制:3000 ms  |           内存限制:65535 KB 难度:1   描述 现在输入一个正整数k,找到所有的正整数x>=y,使得1/k=1/x+1/y.   输入 第一行输入一个整数n,代表有n组测试数据. 接下来n行每行输入一个正整数k 输出 按顺序输出对应每行的k找到所有满足条件1/k=1/x+1/y的组合 样例输入 2 2 12 样例输出 1/2=1/6+1/3 1/2=1/4+1/4 1/12=1/156+1/13 1/12=1/84+1/14 1/12…
It is easy to see that for every fraction in the form  (k > 0), we can always find two positive integers x and y,x ≥ y, such that: . Now our question is: can you write a program that counts how many such pairs of x and y there are for any givenk? Inp…
题目链接:https://vjudge.net/problem/UVA-10976 It is easy to see that for every fraction in the form 1k(k > 0), we can always find two positive integers x and y, x ≥ y, such that: 1/k=1/x+1/y Now our question is: can you write a program that counts how ma…
10976 Fractions Again It is easy to see that for every fraction in the form 1 k (k > 0), we can always find two positive integers x and y, x ≥ y, such that: 1 k = 1 x + 1 y Now our question is: can you write a program that counts how many such pairs…
每一个(k>0)这种形式的分数我们总是可以找到2个正整数x和y(x >= y),使得:现在我们的问题是:给你k,请你写一个程序找出所有的x和y.Input输入含有多组测试数据(不会超过100组).每组测试数据一列,有1个正整数k(0 < k <= 10000).Output对每一组测试数据输出一列,输出共有多少组(x,y),然后输出这些解答.输出格式请参考Sample Output. Sample Input212 Sample Output 2 1/2 = 1/6 + 1/3 1…
直接暴力 没技巧 y应该从k+1开始循环,因为不然y-k<0的时候 你相当于(x*y) % (负数) 了. #include <iostream> using namespace std; ]; ]; int main() { int k,cnt; while(cin>>k) { cnt=; ;y<=*k;y++) { ) ) { X[cnt]=k*y/(y-k); Y[cnt]=y; cnt++; } } cout<<cnt<<endl; ;i…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAB3gAAAM+CAIAAAB31EfqAAAgAElEQVR4nOzdO7KtPJum69GEpAcVQQfSoA80ATddvDLSogMV9ICINLaJkUZZ2NvAKGtH4FcQZaZR9IFtvP96fy0OQkgCxuG+rO9bc86BACGJBw3xmgEAAAAAAAAAcPD/7Xg9XTAAAAAAAAAAwGcgaAYAAAAAAAAABCFoBgAAAAAAAAAEIWgGAAAAA…
[题意]:给你一个数k,求所有使得1/k = 1/x + 1/y成立的x≥y的整数对. [分析]:枚举所有在区间[k+1, 2k]上的 y 即可,当 1/k - 1/y 的结果分子为1即为一组解. [代码]: #include<bits/stdc++.h> using namespace std; int x[10005]; int y[10005]; #define LL long long int main() { int k,c; while(~scanf("%d",…
枚举,由已知条件推得y大于k,小于等于2K AC代码: #include"iostream"#include"cstring"using namespace std;const int maxn=20002;int a[maxn];int b[maxn];int main(){ int i,y; int x,f,k; while(cin>>k&&k) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] x>=y => \(\frac{1}{x}<=\frac{1}{y}\) => \(\frac{1}{x}=\frac{1}{k}-\frac{1}{y}\) 结合两个式子可以得到 y<=2*k 则枚举y,然后根据式子得到x,判断合法性就ok [代码] /* 1.Shoud it use long long ? 2.Have you ever test several sample(at least ther…
It is easy to see that for every fraction in the form 1k(k > 0), we can always find two positive integersx and y, x ≥ y, such that:1k=1x+1yNow our question is: can you write a program that counts how many such pairs of x and y thereare for any given…
Content 给定正整数 \(k\),找到所有的正整数 \(x \geqslant y\),使得 \(\frac{1}{k}=\frac{1}{x}+\frac{1}{y}\). 数据范围:\(0<k\leqslant 10^4\). Solution 我们考虑直接暴力枚举,那么如何枚举?又如何确定枚举的上界与下界? 由于题目中给出的要求 \(x\geqslant y\),因此我们可以考虑枚举 \(y\),然后显然要使得 \(y>k\),因此我们枚举的下界就是 \(k+1\),那么枚举的上界…
分数拆分 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描写叙述 如今输入一个正整数k,找到全部的正整数x>=y,使得1/k=1/x+1/y. 输入 第一行输入一个整数n,代表有n组測试数据. 接下来n行每行输入一个正整数k 输出 按顺序输出相应每行的k找到全部满足条件1/k=1/x+1/y的组合 例子输入 2 2 12 例子输出 1/2=1/6+1/3 1/2=1/4+1/4 1/12=1/156+1/13 1/12=1/84+1/14 1/12=1/60+1/15…
http://codeforces.com/problemset/problem/397/D 题意:v(n) 表示小于等于n的最大素数,u(n)表示比n的大的第一个素数,然后求出: 思路:把分数拆分成两个分数相减,你就会发现规律,等于1/2-1/3+1/3-1/5........,找出v(n)和u(n),答案就出来了. #include <cstdio> #include <cstring> #include <algorithm> #define ll long lo…
题目链接:https://vjudge.net/contest/147561#problem/A 题意:除法运算,abcde / fghij = n,从小到大输出,其中abcdefghij为0~9的不重复数字. 分析: 1.从小到大其实就是一大就跟着大. 2.不用枚举0~9的全排列,只用枚举其中一个数fghij即可,算出abcde,看是不是0~9都有. Tip: sprintf(*,格式输入,*);用法,把目标数据转成char * 型. #include <bits/stdc++.h> usi…
方法一:朴素算法:O(n). #include<bits/stdc++.h> using namespace std; int get_num(int n){ ; ;i<=n;++i) )num++; return num; } int get_sum(int n){ ; ;i<=n;++i) )tot+=i; return tot; } int main(){ int n; while(cin>>n){ cout<<get_num(n)<<en…
例15   除法算式 问题描述 输入正整数n(2≤n≤68),按从小到大输出所有形如abcde/fghi=n的表达式.其中a~i为1~9的一个排列. 输入格式 每行为一个正整数n (n <= 1500),输入n=0结束. 输出格式 输出满足条件的所有形如abcde/fghi=n的表达式,每个表达式占一行,具体格式参见输出样例. 输入样例 4 20 62 0 输出样例 15768/3942=4 17568/4392=4 23184/5796=4 31824/7956=4 No Solution!…
题目链接:uva 11354 - Bond 题目大意:给定一张图.每次询问两个节点路径上进过边的危急值的最大值的最小值. 解题思路:首先建立最小生成数,然后依据这棵树做树链剖分. #include <cstdio> #include <cstring> #include <vector> #include <algorithm> using namespace std; const int maxn = 50005; const int INF = 0x3f…
题目链接: https://cn.vjudge.net/problem/UVA-10288 题目大意: 一种刮刮卡一共有n种图案,每张可刮出一个图案,收集n种就有奖,问平均情况下买多少张才能中奖?用最简的分数形式表示答案.n<=33. 解题思路: 假设现在已刮到k个图案了,刮到新图案的概率是(n-k)/n,即若要再收集一个新图案平均要刮s=n/(n-k)次.所以只需要穷举k=1 to n,累加s的和就行了.注意式子可以将分子n提取出来. 先附上分数类模板 struct Fraction//分数类…
参考了https://www.cnblogs.com/dwtfukgv/p/5645446.html (1)直接二分答案.说实话我没有想到, 一开始以为是贪心, 以某种策略能得到最优解. 但是想了很久没想出来, 后来看了博客发现因为显然答案是单调的, 可以用二分来做. 看到最大, 最小, 可以考虑答案是否单调, 单调考虑用二分 (2)然后是小数化分数, 其实一开始我想模拟分数, 然后发现很麻烦, 之后博客里的方法技巧性很强. 其实这个方法默认了分母是在1到n之间的, 而好像题目并没有给出这个条件…
设当前有k个,那么也就是说拿到其他图案的可能是(n-k)/n 那么要拿到一个就要拿n/(n-k)次 所以答案就是n(1/n + 1/(n-1) ......1/2 + 1 / 1) 看起来很简单,但是实现有很多细节 一开始我是写了一个分数加法的函数 然后发现中间过程会溢出 所以要做两个操作 (1)  分母为1和n不算,最后算整数部分再加上去 因为如果算的话就要乘进去,分母会溢出 (2)要直接算所有数的最小公倍数,然后分子一起加(看代码) 我一开始是单独一个个分数来加减,这样在算分子的时候中间结果…
Problem EEg[y]ptian Fractions (HARD version)Given a fraction a/b, write it as a sum of different Egyptian fraction. Forexample, 2/3=1/2+1/6.There is one restriction though: there are k restricted integers that should notbe used as a denominator. For…
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1696 题意 平面上有n个整数点,找一个矩形,使得边界上包含尽量多的点. 思路 如刘书 首先可以按照x对所有点排序,然后枚举矩形左右边界 确定左右边界之后,接下来就可以枚举下边界,直接求最优上边界. 当左右下边界确定后,就能知道图中粉色部分上有多少个点,但这样离求出带上边…
题目 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1030 题意 矩阵,有障碍和普通地面两种子元素,求普通地面连成的子矩阵面积最大值 * 3 思路 如刘书 对于子矩阵长方形来说,其底边上必然有一点,该点向上可以延伸的距离就是子矩阵的长,枚举这一点,设为(i,j).(i,j)不是障碍是普通地面. 令up[i][j]为其向上能…
https://vjudge.net/problem/UVA-10288 大街上到处在卖彩票,一元钱一张.购买撕开它上面的锡箔,你会看到一个漂亮的图案. 图案有n种,如果你收集到所有n(n≤33)种彩票,就可以得大奖. 请问,在平均情况下,需要买多少张彩票才能得到大奖呢? 答案以带分数形式输出 例:当n=5时 思路简单,就是输出麻烦 #include<cstdio> #include<cstring> #include<cmath> #include<algori…