zoukankan      html  css  js  c++  java
  • 10.6比赛 T2

    纺织(textile)
    【题目描述】
    机户出资,机工出力,这是种花家早期资本主义萌芽的出现。
    小 C 有 n 个机工, 小 C 可以安排他们分成若干个组来进行纺织。
    当然,如果一个组的人数越多,那么分配给这个组的任务的难度也就
    越大。具体来说,就是如果一个组里有 x 个人,那么分配给他们的任
    务需要他们用 x 天来完成。为了赚取更多资本,小 C 给机工们下了
    一条命令,一组机工完成当前任务后,如果发现其他机工中 只要还有
    一组正在工作,那么这组机工必须 立刻 再次开始他们的任务,否则他
    们就可以休息了。 所有机工最初都是同时开始工作的, 从他们同时开
    始工作的那一刻到所有人都休息的那一刻称为总工作时间。小 C 发
    现,分组的情况不同,总工作时间也会有所不同,他想知道,最多可
    以产生多少种不同的总工作时间?
    【输入数据】
    输入只有一行一个正整数 n,表示机工的人数。
    【输出数据】
    输出一个整数,表示不同的总工作时间数。
    【样例输入】
    3
    【样例输出】
    3
    【数据范围】
    对于 10%的数据,n<=10;
    对于 30%的数据,n<=100;
    对于 50%的数据,n<=300;
    对于 100%的数据,n<=1000。
    【样例解释】
    有 3 种本质不同的分组方式:
    ① 分 3 组,每组 1 人,总工作时间为 1。
    ② 分 2 组,一组 1 人,另一组 2 人,总工作时间为 2。
    ③ 分 1 组,这一组 3 人,总工作时间为 3。
    所以不同的总工作时间数为 3。

    思路:

    就是将n分成几个大等于一的数,然后算出不同的最大公倍数的个数

    代码:

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<cmath>
     5 using namespace std;
     6 bool x[1001];
     7 int n,a[1001],h;
     8 long long b[1001],daan;
     9 int main()
    10 {
    11     int i,j,g;
    12     //freopen("textile.in","r",stdin);
    13     //freopen("textile.out","w",stdout);
    14     cin>>n;
    15     for(i=2;i<=n;i++)
    16     {
    17         if(!x[i])
    18         {
    19             h++;
    20             a[h]=i;
    21         }
    22         for(j=1;i*a[j]<=n;j++)
    23         {
    24             x[i*a[j]]=true;
    25             if(i%a[j]==0)
    26             {
    27                 break;
    28             }
    29         }
    30     }
    31     b[0]=1;
    32     for(i=1;i<=h;i++)
    33     {
    34         for(j=n;j>=a[i];j--)
    35         {
    36             
    37             for(g=a[i];g<=j;g*=a[i])
    38             {
    39                 b[j]+=b[j-g];
    40             }
    41         }
    42     }
    43     for(i=0;i<=n;i++)
    44     {
    45         daan+=b[i];
    46     }
    47     cout<<daan;
    48     return 0;
    49 }
    View Code
  • 相关阅读:
    [OrangePi] Installation on SD Card
    网线直连笔记本玩树莓派
    vim多行缩进的方法
    对linux的根目录执行强制递归移除
    windows下快速启动 nginx 和 php-cgi 的两个批处理
    windows下nginx和php环境的配置
    c语言对文件操作完成后尽量手动关闭
    [记录]使用openGL显示点云的一个程序
    linux中使用软链接时出现 too many levels of symbolic links
    使用 nano 的时候提示找不到 libncursesw.so.5 这个共享库
  • 原文地址:https://www.cnblogs.com/fenghhh/p/7631763.html
Copyright © 2011-2022 走看看