题目链接:点击查看

题目大意:给出一个数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)(进制转换)相关推荐

  1. SPOJ - BALNUM Balanced Numbers(数位dp+进制转换)

    题目链接:点击查看 题目大意:给出平衡数的定义:每一个偶数出现的次数必须是奇数次,每一个奇数出现的次数必须是偶数次,求给定区间中有多少个平衡数 题目分析:数位dp,这个题目就难在怎么确定状态转移,本来 ...

  2. 探索C/C++ 进制转换之美:从原理到应用

    一.简介 (Introduction) 进制 前缀表示 整数常量示例 转换库接口 参数及返回值示例 二进制 0b 或 0B 0b1010 std::bitset<> std::bitset ...

  3. Educational codeforces round 83 div2C(类似进制转换,等比数列又一个性质)

    C. Adding Powers 原题目地址 题意: 给你一个目标数组,要你 对一个所有元素从0开始的数组 进行一种操作. 每一步可以对一个元素增加 k^i ( i 为每一步)( i 可以为0) 或者 ...

  4. Python实现各种进制转换问题,so easy

    Python实现进制转换问题,so easy ********************十进制转其他进制************************************* #系统默认a,b值都是 ...

  5. UVA10473 Simple Base Conversion【进制转换】

    In this problem you are asked to write a simplebase conversion program. You will be givena hexadecim ...

  6. python十进制转八进制_Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)...

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x) Convert an integer num ...

  7. C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换

    描述 我们都知道Excel的列数是用字母表示的,比如第1列对应A,第27列对应AA. 假设给定一个正整数n,你能给出它所对应的字母表示么? 输入格式 程序需要读入多个测试样例,每个测试样例中: 一个正 ...

  8. 植物大战僵尸 进制转换 使用JAVA 更改关卡 和金钱

    文章目录 前言 一.进制转换 将二进制.八进制.十六进制转换为十进制 将二进制.八进制.十六进制转换为十进制 二.获取数据修改关卡 小技巧进制转换 三.获取数据修改阳光 四.通过编码修改关卡和金钱 修 ...

  9. 【PAT甲级】字符串处理及进制转换专题

    目录 字符串处理 PAT甲级 1001 A+B Format (20 分) PAT甲级1005 Spell It Right (20 分) PAT甲级1035 Password (20 分) PAT甲 ...

最新文章

  1. 深度高能粒子对撞追踪:Kaggle TrackML粒子追踪挑战赛亚军访谈
  2. 实例58:python
  3. java加载配置文件
  4. ROS笔记(11) Qt工具箱
  5. xp速度比服务器系统,让Windows XP跑得更快更稳
  6. MySQL-02-windows下查看frm,myi,myd
  7. Unity基础到入门-导航系统(Navigation)
  8. 【剖析 | SOFARPC 框架】之SOFARPC 连接管理与心跳剖析
  9. 探索淘宝订单号生成方案
  10. C++检测键盘大小写
  11. 编程之余对人品的感悟
  12. 锐龙r7 6800u和i5 12500h选哪个好 r76800u和i512500h对比
  13. 源码篇:ReentrantLock 源码分析上篇
  14. 鸿蒙微信公众号报名,鸿蒙系统官网2.0报名分享
  15. 不接电话会让你的备案号注销(附:网站备案电话查询)
  16. 详谈数据库泛型:第一、二、三、四和BCN范式
  17. 细节决定能全网PING通————网络实验记录
  18. java获取电脑配置_使用Java获取cao作系统和硬件信息
  19. Vue零基础实战教程
  20. win11抢先流出版体验镜像

热门文章

  1. Redis添加从节点
  2. vim比vi做的一些改进
  3. 标记-清除(Mark-Sweep)
  4. RocketMQ消息支持的模式-消息异步发送
  5. springboot约定优于配置的体现
  6. 【技术改造】电商系统用户模块集成Feign-2
  7. aop简介-基于jdk的动态代理
  8. spring相关API
  9. 序列化和反序列化的概述
  10. 字节输入流一次读取多个字节