ICPC2022Hangzhou D Money Game 题解

发布时间 2023-12-03 00:06:01作者: Martian148

思维

Link

ICPC2022Hangzhou D Money Game

Question

\(n\) 个人围成一圈,初始每个人有 \(a_i\) 元,每轮第 \(i\) 个人给第 \((i+1)\%N\) 个人自己一半的钱,问第 \(2022^{1024}\) 轮后每个人的钱

Solution

我们猜测很多次后每个人的钱数会趋于稳定,通过打表也能验证这一点,打表发现,稳定后第一个人的钱数是后面 \(n-1\) 个人的两倍,由于总钱数是不变的,所以 \(a[0]=2 \cdot\frac{sum}{n+1},\ a[i]=\frac{sum}{n+1}\)

Code

#include<bits/stdc++.h>
#include<ctime>
using namespace std;
const int maxn=1e5+5;
double a[maxn],sum=0;
int main(){
	int N;
	cin>>N;
	for(int i=0;i<N;i++)
		cin>>a[i],sum+=a[i];
	double b=sum/(N+1);
	double a=2*b;
	for(int i=1;i<=N;i++){
		printf("%.15lf ",i==1?a:b);
	} 
	return 0;
}