POJ 3970 Party
2016-09-02 13:54
134 查看
Description
The CEO of ACM (Association of Cryptographic Mavericks) organization has invited all of his teams to the annual all-hands meeting, being a very disciplined person, the CEO decided to give a money award to
the first team that shows up to the meeting.
The CEO knows the number of employees in each of his teams and wants to determine X the least amount of money he should bring so that he awards the first team to show up such that all team members receive the same amount of money. You must write a program to
help the CEO achieve this task.
Input
The input consists of multiple test cases, each test case is described on a line by itself, Each line starts with an integer N (1 <= N <= 20) the number of teams in the organization followed by N space separated
positive integers representing the number of employees in each of the N teams. You may assume that X will always fit in a 32 bit signed integer. The last line of input starts with 0 and shouldn't be processed.
Output
For each test case in the input print "The CEO must bring X pounds.", where X is as described above or "Too much money to pay!" if X is 1000000 or more.
Sample Input
Sample Output
就是求个最大公倍数,注意判断超出的情况。
#include<set>
#include<map>
#include<ctime>
#include<cmath>
#include<stack>
#include<queue>
#include<bitset>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
#define rep(i,j,k) for (int i = j; i <= k; i++)
#define per(i,j,k) for (int i = j; i >= k; i--)
#define loop(i,j,k) for (int i = j;i != -1; i = k[i])
#define lson x << 1, l, mid
#define rson x << 1 | 1, mid + 1, r
#define fi first
#define se second
#define mp(i,j) make_pair(i,j)
#define pii pair<int,int>
using namespace std;
typedef long long LL;
const int low(int x) { return x&-x; }
const double eps = 1e-4;
const int INF = 0x7FFFFFFF;
const int mod = 9973;
const int N = 3e5 + 10;
int n, x;
LL gcd(LL x, LL y)
{
return x%y ? gcd(y, x%y) : y;
}
int main()
{
while (scanf("%d", &n), n)
{
LL ans = 1;
while (n--)
{
scanf("%d", &x);
if (ans == -1) continue;
if (x >= 1000000) { ans = -1; continue; }
ans = ans / gcd(ans, x) * x;
if (ans >= 1000000) ans = -1;
}
if (ans == -1) puts("Too much money to pay!");
else printf("The CEO must bring %lld pounds.\n", ans);
}
return 0;
}
The CEO of ACM (Association of Cryptographic Mavericks) organization has invited all of his teams to the annual all-hands meeting, being a very disciplined person, the CEO decided to give a money award to
the first team that shows up to the meeting.
The CEO knows the number of employees in each of his teams and wants to determine X the least amount of money he should bring so that he awards the first team to show up such that all team members receive the same amount of money. You must write a program to
help the CEO achieve this task.
Input
The input consists of multiple test cases, each test case is described on a line by itself, Each line starts with an integer N (1 <= N <= 20) the number of teams in the organization followed by N space separated
positive integers representing the number of employees in each of the N teams. You may assume that X will always fit in a 32 bit signed integer. The last line of input starts with 0 and shouldn't be processed.
Output
For each test case in the input print "The CEO must bring X pounds.", where X is as described above or "Too much money to pay!" if X is 1000000 or more.
Sample Input
1 3000000 2 12 4 0
Sample Output
Too much money to pay!The CEO must bring 12 pounds.
就是求个最大公倍数,注意判断超出的情况。
#include<set>
#include<map>
#include<ctime>
#include<cmath>
#include<stack>
#include<queue>
#include<bitset>
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
#define rep(i,j,k) for (int i = j; i <= k; i++)
#define per(i,j,k) for (int i = j; i >= k; i--)
#define loop(i,j,k) for (int i = j;i != -1; i = k[i])
#define lson x << 1, l, mid
#define rson x << 1 | 1, mid + 1, r
#define fi first
#define se second
#define mp(i,j) make_pair(i,j)
#define pii pair<int,int>
using namespace std;
typedef long long LL;
const int low(int x) { return x&-x; }
const double eps = 1e-4;
const int INF = 0x7FFFFFFF;
const int mod = 9973;
const int N = 3e5 + 10;
int n, x;
LL gcd(LL x, LL y)
{
return x%y ? gcd(y, x%y) : y;
}
int main()
{
while (scanf("%d", &n), n)
{
LL ans = 1;
while (n--)
{
scanf("%d", &x);
if (ans == -1) continue;
if (x >= 1000000) { ans = -1; continue; }
ans = ans / gcd(ans, x) * x;
if (ans >= 1000000) ans = -1;
}
if (ans == -1) puts("Too much money to pay!");
else printf("The CEO must bring %lld pounds.\n", ans);
}
return 0;
}
相关文章推荐
- poj 3970 Party
- POJ 3970 Party 已被翻译 再想想
- poj 3970 Party 最小公倍数
- POJ 3970:Party
- POJ 3970:Party
- poj--3970 party
- POJ - 3268 Silver Cow Party(两遍dijktsra)
- 树形DP-POJ-2342-Anniversary party
- poj 3268 Silver Cow Party
- poj 2342 Anniversary party 简单树形dp
- POJ2342 Anniversary party 【树形dp】
- POJ 3268 Silver Cow Party (最短路)
- poj 2342 Anniversary party 树形DP 解题报告
- POJ 3268 Silver Cow Party
- poj 2342 Anniversary party(简单树形dp+dfs)
- poj 3268 Silver Cow Party (spfa )
- Silver Cow Party poj 3268 Dijkstra,spfa,+vector
- poj 3268 Silver Cow Party
- poj 1455 Crazy tea party
- POJ 3268 Silver Cow Party (Dijkstra_来回)