uva 616 - Coconuts, Revisited(数学)

题目链接:uva 616 - Coconuts, Revisited

题目大意:题目背景和uva 10726是一样的,只是这道题目是给出n,表示椰子的个数,并且猴子的个数为1,问说是否能找到满足的人数,并且要求人数尽量大。

解题思路:枚举人数,然后根据uva 10726推出的公式去求出最后剩下的椰子是否满足平分等判断。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>

using namespace std;
typedef long long ll;

ll s;

bool judge () {
	for (ll i = 12; i > 1; i--) {
		ll b = i - 1;
		ll t = (ll)pow(i, i);

		if ((s + b) % t)
			continue;

		ll k = (s + b) / t;
		ll p = (ll)pow(b, i);
		ll q = k * p - b;

		if (q % i)
			continue;

		printf("%lld people and 1 monkey\n", i);
		return false;
	}
	return true;
}

int main () {
	while (scanf("%lld", &s) == 1 && s != -1) {
		printf("%lld coconuts, ", s);

		if (judge ())
			printf("no solution\n");
	}
	return 0;
}

uva 616 - Coconuts, Revisited(数学),码迷,mamicode.com

时间: 2024-11-07 05:37:58

uva 616 - Coconuts, Revisited(数学)的相关文章

uva 10623 - Thinking Backward(数学)

题目链接:uva 10623 - Thinking Backward 题目大意:就是给出N,表示要将平面分解成N份,问有哪些可选则的方案,m表示椭圆.n表示圆形.p表示三角形的个数,m.n.p分别给定范围. 解题思路:本来这题一点思路都没有,但是在论坛上看到一个公式N=2+2m(m?1)+n(n?1)+4mn+3p(p?1)+6mp+6np 这样只要枚举m和p,求解n,判断n是否满足即可,注意n一定是整数. #include <cstdio> #include <cstring>

uva 10537 Toll! Revisited(优先队列优化dijstra及变形)

Toll! Revisited 大致题意:有两种节点,一种是大写字母,一种是小写字母.首先输入m条边,当经过小写字母时需要付一单位的过路费,当经过大写字母时,要付当前财务的1/20做过路费.问在起点最少需要带多少物品使到达终点时还有k个物品.当有多条符合条件的路径时输出字典序最小的一个. 思路:已知终点的权值,那么可以从终点向前推.求终点到起点的最短路径,然后按字典序打印路径. 比较难处理的是:向前推时前驱节点的权值计算.列个方程算算就可以了,主要时不能整除的情况. 计算前驱结点dis值的时候,

uva 11657 - Rational Billiard(数学)

题目链接:uva 11657 - Rational Billiard 题目大意:给定一个边界M,N,以及第一个球和第二个球的位置,第一个球以p,q的方向移动,碰到边界后被反弹,和光线的路线一致,问有没有可能集中第二个球. 解题思路:在网上参考别人的思路,首先将横纵坐标扩大相应倍数,保证p,q每移动一次对应在新平面为单位长度,然后只需要考虑横向移动所需要的步数,减掉纵向移动所需的步数后,剩余的步数是否满足周期的倍数即可.考虑四种请况.这题数据非常水,一开始坐标写错也过了. #include <cs

UVA 10668 - Expanding Rods(数学+二分)

UVA 10668 - Expanding Rods 题目链接 题意:给定一个铁棒,如图中加热会变成一段圆弧,长度为L′=(1+nc)l,问这时和原来位置的高度之差 思路:画一下图可以很容易推出公式,设圆弧扇形部弧度r,那么可以计算出铁棒长度为lr/sin(r)这个公式在[0, pi/2]是单调递增的,所以可以用二分法去求解 要注意的一点是最后答案计算过程中带入mid,之前是带入x(二分的左边值),可实际上x是可能等于0的,而带入mid,由于是double型,所以mid实际上表示是一个非常趋近0

uva 11024 - Circular Lock(数学)

题目链接:uva 11024 - Circular Lock 题目大意:有个2*2的矩阵,给定p,s,P为p数组中所有元素的最大公约数.s为2*2矩阵的初始状态,每次可以选择一行或是一列同时加1,最终使得sij%P=0 解题思路:gij为aij还需要多少可以是P的倍数,判断g11?g12?g21+g22是P的倍数即可. /******************** * A + C = a + k1 * p * B + C = b + k2 * p * A + D = c + k3 * p * B

Coconuts, Revisited

Coconuts, Revisited The short story titled Coconuts, by Ben Ames Williams, appeared in the Saturday Evening Post on October 9, 1926. The story tells about five men and a monkey who were shipwrecked on an island. They spent the first night gathering c

uva 617- Nonstop Travel(暴力+数学)

题目链接:uva 617 - Nonstop Travel 题目大意:在一条路上有n个红绿灯,给出红绿灯的位置,以及绿灯,黄灯和红灯的时间,问现在以什么样的速度可以不同停止便通过这条路段.(速度只在30~60km/h) 解题思路:枚举速度,然后判断即可. 注意说黄灯也是可以过的,以及红绿灯的距离是以米为单位的. #include <cstdio> #include <cstring> const int N = 10; struct state { double dis; int

UVa 1639 Candy (数学期望+组合数学+高精度存储)

题意:有两个盒子各有n个糖,每次随机选一个(概率分别为p,1-p),然后吃掉,直到有一次,你打开盒子发现,没糖了! 输入n,p,求另一个盒子里糖的个数的数学期望. 析:先不说这个题多坑,首先要用long double来实现高精度,我先用的double一直WA,后来看了题解是用long double, 改了,可一直改不对,怎么输出结果都是-2.00000,搞了一晚上,真是无语,因为我输入输出数据类型是long double, 结果一直不对 ,可能是我的编译器是C89的吧,和C语言,输入输出格式不同

Coconuts, Revisited(递推+枚举+模拟)

Description The short story titled Coconuts, by Ben Ames Williams, appeared in the Saturday Evening Post on October 9, 1926. The story tells about five men and a monkey who were shipwrecked on an island. They spent the first night gathering coconuts.