| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1568 人关注过本帖
标题:这是啥意思
取消只看楼主 加入收藏
你爸边哭边
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2017-10-30
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:0 
这是啥意思
链接:https://ac.
来源:牛客网

题目描述
牛牛喜欢2的幂次,于是他在自己的书包里塞了很多写着2的幂次的卡片
可能多张卡片会写着同一个数字
牛牛喜欢那些能用一张或者多张卡片的和所表示的数字
比如书包里有四张卡片2,4,4,64
那么牛牛就会喜欢10,因为10=2+4+4
也喜欢0
但是不会喜欢12,因为12=4+4+2+2,可怜的牛牛只有一张2
现在牛牛想知道他一共会喜欢多少个数。
输入描述:

第一行输入一个整数n (1 ≤ n  ≤ 50),表示卡片的数量
第二行输入n个数,表示每张卡片的数字
每个数字在[1, 2^50]之间

输出描述:

输出一个整数

示例1
输入
复制

2
1 2

输出
复制

4

示例2
输入
复制

4
1 1 1 1

输出
复制

5

示例3
输入
复制

7
1 2 2 2 4 4 16

输出
复制

32

示例4
输入
复制

5
1 32 1 16 32

输出
复制

18

备注:

子任务1:n <= 10
子任务2: n <= 20
子任务3: n <= 50



这道题可以先从小到大排序。可以发现,如果第i个a值不会被前面的值累加得到,说明这个数是和前面的数没有关系,可以把前面的计入答案,否则,需要把cnt+  这个数除以这个独立集中最小值。


这是别人的思路,看不懂是啥意思


#include<bits/stdc++.h>
using namespace std;
long long  n,a[60];
int main()
{
    cin>>n;
    for(int i=1; i<=n; ++i)
        cin>>a[i];
    sort(a+1,a+1+n);
    a[n+1]=2333333333333333333ll;
    long long ans=1,base=0,num=0,Max=0;
    for(int i=1; i<=n+1; ++i)
        if(Max>=a[i])
        {
            num+=a[i]/base;
            Max+=a[i];
        }
        else
        {
            ans*=(num+1);
            base=a[i];
            Max=a[i];
            num=1;
        }
    cout<<ans<<endl;
    return 0;
}
别人的代码
搜索更多相关主题的帖子: 数字 输出 输入 num 复制 
2020-02-21 14:14
快速回复:这是啥意思
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022065 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved