zoukankan      html  css  js  c++  java
  • CF1249C2-Good Numbers (hard version)

    题目:https://vjudge.net/problem/CodeForces-1249C2

    分析:转为三进制数后,从高位往低位找到第一个为2的位置h,再从此位置向高位找到第一个为0的位置k,将k位改为1并舍去低位的所有数,此时必然比原数大且满足要求,运用快速幂输出即可。

    #include <stdio.h>
    #include <string.h>
    typedef long long ll;
    ll a[200];
    ll quickpow(ll base,ll b){//快速幂
        ll ans=1;
        while(b){
            if(b&1)ans*=base;
            base*=base;
            b>>=1;
        }
        return ans;
    }
    int main(void){
        int t;
        scanf("%d",&t);
        while(t--){
            memset(a,0,sizeof(a));
            ll n;
            scanf("%lld",&n);
            ll r=0,n2=n;
            while(n>0){
                a[r++]=n%3;
                n/=3;
            }
            ll h=r-1;
            for(;h>=0;h--){
                if(a[h]==2)
                break;
            }
            if(h==-1)
            printf("%lld
    ",n2);
            else{
            ll k=h+1;
            for(;k<=r-1;k++){
                if(a[k]==0){
                    a[k]=1;
                    break;
                }
            }
            ll sum=0;
            if(k==r)a[r]=1;//不存在为0的位只能最高位进1
            for(ll j=k;j<=r;j++){
                if(a[j]==1)
                sum+=quickpow(3,j);
            }
            printf("%lld
    ",sum);
        }
    }
    return 0;
    } 
    终究独木难支。
  • 相关阅读:
    libevent(十)bufferevent 2
    libevent(九)bufferevent
    maven本地库更新失败
    IDEA常用快捷键
    ELASTIC SEARCH 安装
    Hbase建模选择
    ElasticSearch关键概念
    Nginx+tomcat 负载均衡
    MapReduce (MRV1)设计理念与基本架构
    Kafka安装验证及其注意
  • 原文地址:https://www.cnblogs.com/yanying7/p/12266298.html
Copyright © 2011-2022 走看看