codeforces 1249C1 + 1249C2 (贪心)
时间:2019-10-30
本文章向大家介绍codeforces 1249C1 + 1249C2 (贪心),主要包括codeforces 1249C1 + 1249C2 (贪心)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题意分析
给出一个数n,求一个数m,使得m >= n ,并且m 满足: m = ∑ 3 ^ i * x (x = 0 或者 x = 1 ),求出满足条件的最小的m
解题思路
两个题目都是一个题意,只是n的大小不同,所以就不用两个思路了
注意到,我们可以先令 m = ∑ 3 ^ i ,求出此时满足条件的最小的m,随后,因为m在三进制下,每一位都是1,那么如果我们从高位开始,不断地判断 m - 3 ^ i >= n ,如果满足,则令 m -= 3 ^ i ,此时我们删除了当前可以删除的最大数,这样将使得最终的结果最小,并且大于等于n
代码区
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cmath> #include<cstring> #include<queue> #include<string> #include<fstream> #include<vector> #include<stack> #include <map> #include <iomanip> #define bug cout << "**********" << endl #define show(x, y) cout<<"["<<x<<","<<y<<"] " #define LOCAL = 1; using namespace std; typedef long long ll; const ll inf = 1e18 + 7; const int Max = 2e5 + 10; ll fast_pow(ll a, ll n) { ll sum = 1; while (n != 0) { if (n & 1) sum = sum * a ; a = a * a ; n >>= 1; } return sum; } int main() { #ifdef LOCAL // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); #endif int t; scanf("%d",&t); while(t--) { ll n; scanf("%lld",&n); ll sum = 0; int num = 0; while(sum < n) { sum += fast_pow(3,num); num++; } for(int i = num -1; i >= 0 ;i --) { ll lost = fast_pow(3,i); if(sum - lost >= n) sum -= lost; } printf("%lld\n",sum); } return 0; }
原文地址:https://www.cnblogs.com/winter-bamboo/p/11763505.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python 函数的本质理解
- centOS(离线) off-line install docker-ce
- Java 工厂 Simple Factory&Factory&Abstract Factory
- python 性能的优化
- python中列表的常见操作
- Aop 源码解读
- python字典的合并排序添加查询
- python numpy pandas
- 让终端支持播放mp3,移植mp3解码库libmad和madplay到嵌入式linux
- Spring Bean的解析和加载详细解释
- ucgui在嵌入式linux下的移植
- java 类的加载
- 分组查询时,select的字段是否一定要都在group by中?
- java 多线程线程安全
- MySQL并不孤单的存在—硬件环境的限制与优化