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个1111和1个1110得到:

5656可以由5个1111和1个101得到

5678可以由5个1111和1个111和1个11和1个1得到

所以就是求一个每一位对10取余的最大值。

My Code:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
    int n;
    scanf("%d",&n);
    int ans = 0;
    while(n)
    {
        int m = n%10;
        if(ans < m)
            ans = m;
        n /= 10;
    }
    cout<<ans<<endl;
    return 0;
}
时间: 2024-10-07 11:35:28

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 权势二进制 (水题)

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 输出答案占一行. Inpu

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 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

POJ 2777 Count Color (线段树成段更新+二进制思维)

题目链接:http://poj.org/problem?id=2777 题意是有L个单位长的画板,T种颜色,O个操作.画板初始化为颜色1.操作C讲l到r单位之间的颜色变为c,操作P查询l到r单位之间的颜色有几种. 很明显的线段树成段更新,但是查询却不好弄.经过提醒,发现颜色的种类最多不超过30种,所以我们用二进制的思维解决这个问题,颜色1可以用二进制的1表示,同理,颜色2用二进制的10表示,3用100,....假设有一个区间有颜色2和颜色3,那么区间的值为二进制的110(十进制为6).那我们就把

51nod 1273 旅行计划——思维题

某个国家有N个城市,编号0 至 N-1,他们之间用N - 1条道路连接,道路是双向行驶的,沿着道路你可以到达任何一个城市.你有一个旅行计划,这个计划是从编号K的城市出发,每天到达一个你没有去过的城市,并且旅途中经过的没有去过的城市尽可能的多(如果有2条路线,经过的没有去过的城市同样多,优先考虑编号最小的城市),直到所有城市都观光过一遍.现在给出城市之间的交通图T,以及出发地点K,你来设计一个旅行计划,满足上面的条件.例如: (K = 2) 第1天 从2到0 (城市 1 和 0 变成去过的) 第2

51nod 1287 加农炮(锻炼思维的好题)

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1287 一个长度为M的正整数数组A,表示从左向右的地形高度.测试一种加农炮,炮弹平行于地面从左向右飞行,高度为H,如果某处地形的高度大于等于炮弹飞行的高度H(A[i] >= H),炮弹会被挡住并落在i - 1处,则A[i - 1] + 1.如果H <= A[0],则这个炮弹无效,如果H > 所有的A[i],这个炮弹也无效.现在给定N个整数的数组B代表炮弹高度