• 洛谷P1291 [SHOI2002] 百事世界杯之旅


    题目背景

    “……在 2002 年 6 月之前购买的百事任何饮料的瓶盖上都会有一个百事球星的名字。只要凑齐所有百事球星的名字,就可参加百事世界杯之旅的抽奖活动,获得球星背包,随声听,更可赴日韩观看世界杯。还不赶快行动!”

    题目描述

    你关上电视,心想:假设有 �n 个不同的球星名字,每个名字出现的概率相同,平均需要买几瓶饮料才能凑齐所有的名字呢?

    输入格式

    输入只有一行一个整数,表示不同球星名字的个数 �n。

    输出格式

    输出凑齐所有的名字平均需要买的饮料瓶数。如果是一个整数,则直接输出,否则应该直接按照分数格式输出,例如五又二十分之三应该输出为:

    1. 3
    2. 5--
    3. 20

    第一行是分数部分的分子,第二行首先是整数部分,然后是由减号组成的分数线,第三行是分母。减号的个数应等于分母的位数。分子和分母的首位都与第一个减号对齐。

    分数必须是不可约的。

    输入输出样例

    输入 #1复制

    2
    

    输出 #1复制

    3
    

    输入 #2复制

    17

    输出 #2复制

      340463
    58------
      720720

    说明/提示

    数据规模与约定

    对于全部的测试点,保证 2≤n≤33。

    上代码:

    1. #include
    2. #include
    3. using namespace std;
    4. typedef long long ll;
    5. ll f[37],a[37],b[37],n,ans1=0,ans2=1,ans3;
    6. ll gcd(ll x,ll y){
    7. if(x==0){
    8. return y;
    9. }
    10. return gcd(y%x,x);
    11. }
    12. ll lcm(ll x,ll y){
    13. return x/gcd(x,y)*y;
    14. }
    15. ll duliu(ll x){
    16. ll res=0;
    17. while(x){
    18. x=x/10;
    19. res++;
    20. }
    21. return res;
    22. }
    23. int main(){
    24. cin>>n;
    25. for(ll i=1;i<=n;i++){
    26. ll g=gcd(i,n);
    27. a[i]=n/g;
    28. b[i]=i/g;
    29. }
    30. for(ll i=1;i<=n;i++){
    31. ans2=lcm(ans2,b[i]);
    32. }
    33. for(ll i=1;i<=n;i++){
    34. ans1=ans1+ans2/b[i]*a[i];
    35. }
    36. ll g=gcd(ans1,ans2);
    37. ans1=ans1/g;
    38. ans2=ans2/g;
    39. if(ans1%ans2==0){
    40. cout<
    41. return 0;
    42. }
    43. ans3=ans1/ans2;
    44. ans1=ans1%ans2;
    45. ll duliu3=duliu(ans3);
    46. ll duliu1=duliu(ans2);
    47. for(ll i=1;i<=duliu3;i++){
    48. cout<<" ";
    49. }
    50. cout<
    51. cout<
    52. for(ll i=1;i<=duliu1;i++){
    53. cout<<"-";
    54. }
    55. cout<
    56. for(ll i=1;i<=duliu3;i++){
    57. cout<<" ";
    58. }
    59. cout<
    60. return 0;
    61. }

  • 相关阅读:
    Spring 自定义事件,通过注解的方式来实现事件监听
    深入浅出Flask PIN
    SpaceX间接「颠覆」了手机?星链如何直连手机通信?
    【C++】——互斥锁的使用(lock_guard)
    伪元素与伪类
    05、SpringCloud之Hystrix组件学习笔记
    浅谈Git架构和如何避免代码覆盖的事故
    Spring入门程序(二)
    初识微服务技术栈
    JAVA设计模式 —— 软件设计六大原则
  • 原文地址:https://blog.csdn.net/m0_72829993/article/details/139531872