CodeForces - 1249C2 Good Numbers (hard version)(进制转换)
题目链接:点击查看
题目大意:给出一个数n,求出一个大于等于n的“好数”,“好数”的规定是只由3的幂次之和构成
题目分析:直接将n拆成三进制,然后贪心从最高位开始找等于2的位置,找到后从这个位置开始,前面的位全部置零,后面找到一个等于零的位变成一就行了,因为如果想消去这个二,而且要满足大于等于原数,那么就必须让这个二进位,既然进位就会影响到后面较高的位,依次类推,只有到了第一个等于零的位置才能容纳这个进位
代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<cmath>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const LL inf=0x3f3f3f3f3f3f3f3f;const int N=5e3+100;int bit[100],cnt;LL q_pow(LL a,LL b)
{LL ans=1;while(b){if(b&1)ans*=a;a*=a;b>>=1;}return ans;
}void init()
{memset(bit,0,sizeof(bit));cnt=0;
}int main()
{
// freopen("input.txt","r",stdin);
// ios::sync_with_stdio(false);int w;cin>>w;while(w--){init();LL num;scanf("%lld",&num);while(num){bit[++cnt]=num%3;num/=3;}int pos=cnt;while(bit[pos]!=2&&pos>=1)pos--;if(pos!=0){while(pos<=cnt+1){if(bit[pos]==0){bit[pos]=1;break;}pos++;}}LL ans=0;for(int i=pos;i<=cnt+1;i++){if(bit[i])ans+=q_pow(3,i-1);}printf("%lld\n",ans);}return 0;
}
CodeForces - 1249C2 Good Numbers (hard version)(进制转换)相关推荐
- SPOJ - BALNUM Balanced Numbers(数位dp+进制转换)
题目链接:点击查看 题目大意:给出平衡数的定义:每一个偶数出现的次数必须是奇数次,每一个奇数出现的次数必须是偶数次,求给定区间中有多少个平衡数 题目分析:数位dp,这个题目就难在怎么确定状态转移,本来 ...
- 探索C/C++ 进制转换之美:从原理到应用
一.简介 (Introduction) 进制 前缀表示 整数常量示例 转换库接口 参数及返回值示例 二进制 0b 或 0B 0b1010 std::bitset<> std::bitset ...
- Educational codeforces round 83 div2C(类似进制转换,等比数列又一个性质)
C. Adding Powers 原题目地址 题意: 给你一个目标数组,要你 对一个所有元素从0开始的数组 进行一种操作. 每一步可以对一个元素增加 k^i ( i 为每一步)( i 可以为0) 或者 ...
- Python实现各种进制转换问题,so easy
Python实现进制转换问题,so easy ********************十进制转其他进制************************************* #系统默认a,b值都是 ...
- UVA10473 Simple Base Conversion【进制转换】
In this problem you are asked to write a simplebase conversion program. You will be givena hexadecim ...
- python十进制转八进制_Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)...
使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer num ...
- C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换
描述 我们都知道Excel的列数是用字母表示的,比如第1列对应A,第27列对应AA. 假设给定一个正整数n,你能给出它所对应的字母表示么? 输入格式 程序需要读入多个测试样例,每个测试样例中: 一个正 ...
- 植物大战僵尸 进制转换 使用JAVA 更改关卡 和金钱
文章目录 前言 一.进制转换 将二进制.八进制.十六进制转换为十进制 将二进制.八进制.十六进制转换为十进制 二.获取数据修改关卡 小技巧进制转换 三.获取数据修改阳光 四.通过编码修改关卡和金钱 修 ...
- 【PAT甲级】字符串处理及进制转换专题
目录 字符串处理 PAT甲级 1001 A+B Format (20 分) PAT甲级1005 Spell It Right (20 分) PAT甲级1035 Password (20 分) PAT甲 ...
最新文章
- 深度高能粒子对撞追踪:Kaggle TrackML粒子追踪挑战赛亚军访谈
- 实例58:python
- java加载配置文件
- ROS笔记(11) Qt工具箱
- xp速度比服务器系统,让Windows XP跑得更快更稳
- MySQL-02-windows下查看frm,myi,myd
- Unity基础到入门-导航系统(Navigation)
- 【剖析 | SOFARPC 框架】之SOFARPC 连接管理与心跳剖析
- 探索淘宝订单号生成方案
- C++检测键盘大小写
- 编程之余对人品的感悟
- 锐龙r7 6800u和i5 12500h选哪个好 r76800u和i512500h对比
- 源码篇:ReentrantLock 源码分析上篇
- 鸿蒙微信公众号报名,鸿蒙系统官网2.0报名分享
- 不接电话会让你的备案号注销(附:网站备案电话查询)
- 详谈数据库泛型:第一、二、三、四和BCN范式
- 细节决定能全网PING通————网络实验记录
- java获取电脑配置_使用Java获取cao作系统和硬件信息
- Vue零基础实战教程
- win11抢先流出版体验镜像