题目链接:uva 10726 - Coco Monkey
题目大意:n个人,m只猴子,l和r,表示上下限。找出l~r之间有几个数满足题目要求。
s即为由满足要求的数,在题目中表示有s个椰子,n个人说好第二天将椰子平分,但是午夜的时候,一个人偷偷爬起来,将椰子分成n份,并且剩了m个,就将m个拿给了猴子,并且自己藏起来一份;紧接着第2个人,第3个人都按照相同的方法一直到最后一个人;然后第二天,剩下的椰子刚好平分给这n个人,这回没有猴子的了。
解题思路:这题主要是找到满足的s的个数,a数组表示说第i个人时的椰子个数a[i]=s* a[i+1]/(s-1) + m.
这种形式刚好可以转化成等比公式,假设bi = ai + k,
那么a[i] + k = (s/(s-1)) * (a[i+1] + k), 得k = m*(s-1);
这样就可以枚举最后一项个值,然后通过式子求出s,判断s是否在区间[l,r]上即可。
#include <cstdio>
#include <cstring>
#include <cmath>
typedef long long ll;
ll s, m, l, r;
int solve () {
if (log2(s-1) * s > 32)
return 0;
ll t = s * (s - 1);
ll d = m * (s - 1);
ll p = pow(s, s);
ll q = pow(s-1, s);
int ans = 0;
for (ll i = t; i <= 1e8; i += t) {
ll u = (i + d) * p;
if (u % q)
continue;
u = u / q - d;
if (u > r)
break;
if (u >= l)
ans++;
}
return ans;
}
int main () {
int cas;
scanf("%d", &cas);
for (int i = 1; i <= cas; i++) {
scanf("%lld%lld%lld%lld", &s, &m, &l, &r);
printf("Case %d: %d\n", i, solve());
}
return 0;
}
分享到:
相关推荐
ACM---算法数论
从整体讲解数论,课程的重点是密码学(对称密码学和非对称密码学)所涉及数学理论和有效算法实现。
大数据-算法-数论中几个著名函数的性质研究.pdf
本资源主要包括信息安全、数论基础在内的整除理论、同余理论等,有一部分初等数论的内容、密码学的内容和近世代数的内容
大数据-算法-数论中一些著名函数及和式算术性质的研究.pdf
我09年参加现场赛前准备的,这些公式有的是在POJ等OJ上做题时遇到的,还有些可能会出现的数学公式,本人非数学出身,准备的内容尚浅,就是多和乱(不敢说丰富)
很好的初等数论的教材,共三卷,这是第二卷
CJ2-07-简单数论-博弈论初步.pdf
C++ J2-04-简单数论-巩固练习.pdf
C语言-02-简单数论-整除那套理论.pdf
蓝桥杯,算法CJ2-03-简单数论-取模那套理论.pdf
在乘法数论中,在素数分解期间,用素数覆盖正整数可能被视为是并行系统的结果,当且仅当素数倒数的乘积的欧拉公式为真时,并行系统才能正常运行。 给出了质数小于或等于任意界限的精确公式。 可以使用Wolfram的...
大数据-算法-关于数论中一些和式的算术性质研究.pdf
acm-数论 有关数论的一些知识,以及算法实现等。
2009-11数论和密码--南京 不错哦 ~~~~~~~~~~~~~~~~~~~~~~~~~
法兰西数学精品译丛-解析与概率数论导引(中文版)-[法]G·特伦鲍姆-陈华一(译)-高等教育出版社-2011.pdf
代数数论包。Algebraic Number Theory package。
数论是Acm中的重点内容。历年竞赛题目, 一般都有1-2道与数论有密切关系。数论涉及的概念 和算法很多,用途也非常广泛。掌握与数论有关的 方法,是参赛者需要具备的必要技能。
锈数理论 数论中Rust算法的实现。 实现的算法包括: 核因子判别式/多项式的结果例子看一下文件data/input-discriminant.yml 。 # Find the discriminant of 2x^3 + x^2 - 2x + 3.# To feed this file to the ...