思维
Link
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;
}