51nod 1413 权势二进制 (水题)

1413 权势二进制

题目来源: CodeForces

基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题

收藏

关注

取消关注

一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成。例如0,1,101,110011都是权势二进制而2,12,900不是。

当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n。

Input

单组测试数据。
第一行给出一个整数n (1<=n<=1,000,000)

Output

输出答案占一行。

Input示例

9

Output示例

9

各个数位上的最大值即为所求。
#include <iostream>
#include <algorithm>
using namespace std;

int n;

int main()
{
    ios::sync_with_stdio(false);
    cin>>n;
    int ans=0;
    int tmp=n;
    while(tmp)
    {
        ans=max(tmp%10,ans);
        tmp/=10;
    }
    cout<<ans<<endl;
    return 0;
}
 
时间: 2024-10-18 20:20:31

51nod 1413 权势二进制 (水题)的相关文章

51Nod 1413 权势二进制 (思维)

题意 : 一个十进制整数被叫做权势二进制, 当他的十进制表示的时候只由0或1组成.例如0, 1, 101, 110011都是权势二进制而2, 12, 900不是.当给定一个n (1<=n<=1,000,000)的时候, 计算一下最少要多少个权势二进制相加才能得到n. 分析 : 由于权势二进制可以在任意一位构造出1或者0, 那我就可以让每一位都在同时减1, 直到某一位变成0, 继续减其他位, 直到全部都等于0.例如 23303, 可以先构造11101进行相减, 使得除了零外的每一位都减1, 减两

51NOD 1413 权势二进制(思维)

传送门 一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成.例如0,1,101,110011都是权势二进制而2,12,900不是. 当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n. Input 单组测试数据. 第一行给出一个整数n (1<=n<=1,000,000) Output 输出答案占一行. Input示例 9 Output示例 9 解题思路: 这个题目,其实这个题目就是求所有位数中最大的那个数,这个也是很难想到的.举个例子: 9998可以由8个111

51nod 1413 权势二进制

本来刚开始还是想用每一位 -1的个数 然后再乘以10  不断累加 后来发现 完全不是这回事啊  因为本身就是0 和 1 所以只要记录出现的最大的数字 就是答案  因为 n >= 1 // 所以不需要考虑 0 也是1的情况 #include<bits/stdc++.h> using namespace std; char s[20]; int main() { int res =0; cin >>s; int l=strlen(s); for(int i=0;i<l;i+

51nod 1344 走格子(水题+贪心)

1344 走格子 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 取消关注 有编号1-n的n个格子,机器人从1号格子顺序向后走,一直走到n号格子,并需要从n号格子走出去.机器人有一个初始能量,每个格子对应一个整数A[i],表示这个格子的能量值.如果A[i] > 0,机器人走到这个格子能够获取A[i]个能量,如果A[i] < 0,走到这个格子需要消耗相应的能量,如果机器人的能量 < 0,就无法继续前进了.问机器人最少需要有多少初始能量,才能完成

51nod - 1586 - 约数和 - 水题

https://www.51nod.com/Challenge/Problem.html#problemId=1586 一眼看过去居然一点思路都没有的,一言不合就打表,打贡献表. #include <bits/stdc++.h> using namespace std; typedef long long ll; int n = 25; int a[200]; void update_b(int id) { for(int i = 1; i <= id; ++i) { if(id % i

51nod 1413:权势二进制

1413 权势二进制 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一个十进制整数被叫做权势二进制,当他的十进制表示的时候仅仅由0或1组成.比如0,1,101,110011都是权势二进制而2,12,900不是. 当给定一个n的时候,计算一下最少要多少个权势二进制相加才干得到n. Input 单组測试数据. 第一行给出一个整数n (1<=n<=1,000,000) Output 输出答案占一行. Input演

权势二进制 51Nod - 1413

题目链接 https://vjudge.net/problem/51Nod-1413 一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成.例如0,1,101,110011都是权势二进制而2,12,900不是. 当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n. 题解 : 水题,所有位 中最大的那个数就是答案 #include<iostream> #include<cstdio> #include<algorithm> #include&

二进制的难题 51Nod - 1413

一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成.例如0,1,101,110011都是权势二进制而2,12,900不是. 当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n. Input单组测试数据. 第一行给出一个整数n (1<=n<=1,000,000)Output输出答案占一行.Sample Input 9 Sample Output 9 解题思路:先将范围内的所以权势二进制储存,在进行0/1背包; 代码: #include <iostream&g

sdut 2841 Bit Problem (水题)

题目 贴这个题是因为看题解有更简单的方法, 我做的时候是直接算的, 也很简单. 贴一下题解吧: 如果一个整数不等于 0,那么该整数的二进制表示中至少有一位是 1. 这个题结果可以直接输出 x - (x&(x-1)); 因为x-1 之后二进制下,就是最右边的1变成了0, 最右边的1的 右边所有的0变成了1, 不影响最左边. 我的代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4