题目链接http://codeforces.com/contest/1249/problem/C2。这是道进制转换题,我们的目的是找到最小的一个每个位都是1的三进制数来表示一个十进制数n。做法是,先将n转换为一个三进制数,然后对当前位加上低位的进位大于等于2的位置0并进位,这一步需要注意的是,当前位如果产生进位,需要把该位的低位都给置0,这样才能保证重构后的数最小。

此外,需要注意的是,在利用重构数组计算10进制数的时候,不能用pow函数,因为,pow对3的38次幂是无法计算的,会发生溢出,需要自己写一个。

 #include<bits/stdc++.h>

 using namespace std;

 int str[];

 int intToA(long long n, long long radix){
int len = ;
if(!n){
str[] = ;
return ;
}
long long tmp = n;
do{
tmp /= radix;
str[len++] = n - radix * tmp;
n = tmp;
}while(n);
return len;
} long long solve(long long num){
int n = intToA(num, );
int c = ;
for(int i=;i<n;i++){
if(str[i] + c >= ){
fill(str, str + i, );
str[i] = ;
c = ;
}
else{
str[i] += c;
c = ;
}
}
long long j = ;
long long sum = ;
if(c){
for(int i=;i<n;i++){
j *= ;
}
return j;
}
for(int i=;i<n;i++){
sum += (long long) (str[i] * j);
j *= ;
}
return sum;
} int main(){
int q;
scanf("%d", &q);
while(q--){
long long n;
cin>>n;
cout<<solve(n)<<endl;
}
return ;
}

最新文章

  1. css3画图之大白(●—●)
  2. 基于zookeeper的远程方法调用(RMI)的实现
  3. IT人为什么难以拿到高薪?
  4. Spring AOP基础知识
  5. Charles是mac的iddler抓包工具
  6. JavaScript UI技术选型
  7. html5笔记
  8. IFTT-意大利金融交易税
  9. Android 开发之网易云音乐(或QQ音乐)的播放界面转盘和自定义SeekBar的实现
  10. render与vue组件和注册
  11. DVWA 1.9 通关秘籍
  12. JS_高程6.面向对象的程序设计(2)创建对象_1
  13. cocos2d-x 2.2.3 建工程
  14. UVALive - 4094 WonderTeam (贪心)
  15. Mac OS X 下安装使用 Docker
  16. vim和xshell配色
  17. CKeditor、CKFinder的安装配置
  18. MySQL5.7安装手册
  19. PHP 基础系列(三) 【转】PHP 函数实现原理及性能分析
  20. RabbitMQ系列一

热门文章

  1. 对路径“xxxxx”的访问被拒绝。
  2. HNOI 世界树 虚树
  3. 阿里云-docker安装rabbitmq及无法访问主页
  4. webpack拷贝插件 copy-webpack-plugin
  5. Solr初步
  6. SpringBoot读取Resource下文件的几种方式
  7. Kafka、RabbitMQ、RocketMQ等 消息中间件 介绍和对比
  8. Redis主从复制配置+哨兵模式
  9. 常见的SQL编写和优化
  10. inner join和left join