题意:
中文不解释了
分析:
假设表示一共有n个球星,现在还剩k个未收集到,还需购买饮料的平均次数。
那么要求的就是
假设我们现在推到了,我们再买一瓶饮料,有两种可能性,一种是:我们买到了我们没有拥有的球员,那么剩下的子问题就是;如果买到了我们拥有的球员,那么剩下的子问题就是。然而我们任意买一个瓶盖,有的可能性买到我们没有的,有的可能性买到我们已经有的。所以这道题目的递推是就是:
化简得:
#include<cstdio>
#include<cstring>using namespace std;typedef long long ll;inline ll gcd(ll a,ll b){if(b==0) return a;else return gcd(b,a%b);
}inline int dig_len(ll a){int ans=0;while(a){ans++;a/=10;}return ans;
}int main(){int n;ll p=0,q=1,r;scanf("%d",&n);for(int i=1;i<=n;i++){p=p*i+q*n;q*=i;ll f=gcd(p,q);p/=f;q/=f;}r=p/q;p=p%q;if(p==0){printf("%lldn",r);}else{for(int i=dig_len(r);i>0;i--){printf(" ");}printf("%lldn",p);if(r) printf("%lld",r);for(int i=dig_len(q);i>0;i--){printf("-");}printf("n");for(int i=dig_len(r);i>0;i--){printf(" ");}printf("%lldn",q);}return 0;
}
本文发布于:2024-02-02 03:49:22,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170681748041170.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |