zoukankan      html  css  js  c++  java
  • fafu 1252 指数幂序列

    http://acm.fafu.edu.cn/problem.php?id=1252

    View Code
    //fafu 1252 指数幂序列
    
    //这题题意很清楚,3的正整数指数幂序列1, 3, 9, 27, 81, ... 
    //则第 i 小的组合分别为{1},{3},{1,3},{9},{1,9},{3,9},{1,3,9}...
    //若第i 小的组合 的最大一个数位 n 则前面所有数和来的大,这个可以
    //自己推看看(我没推出来,不过自己列一些组合出来,再yy下,应该是这样的)
    //因此可用2 进制数做标记位,如 第2 小的二进制数位 1 表示这一位的
    //指数幂在组合里;第5小的组合可表示为 101 表示需要3的 0次幂和2次幂...
    
    //这题的 次幂是 从0次幂开始的,刚开始没注意看,样例一直过不了,纠结了好久
    //还有就是要用大数,具体看代码
    
    #include <stdio.h>
    #include <string.h>
    
    #define N 70
    
    int num[N][1000], len[N];
    
    int main()
    {
        num[0][1] = 1;
        len[0] = 1;
        for(int i = 1; i < N; ++i)  //打表
        {
            int more = 0;   //记录进位 多少
            len[i] = len[i-1];  //记录 i次幂的数有多长
            for(int j = 1; j <= len[i-1]; ++j)  //大数
            {
                num[i][j] = num[i-1][j] * 3 + more;
                more = 0;
                if(num[i][j] >= 10)
                {
                    more = num[i][j] / 10;
                    num[i][j] %= 10;
                }
            }
            if(more != 0)   //看最后是否有进位
            {
                num[i][ ++len[i] ] = more;
            }
        }
    
        unsigned __int64 n;
        while(scanf("%I64d", &n) != EOF)
        {
            int cnt = 0;
            bool flag = false;
            while(n)
            {
                if(n & 1 == 1)//看二进制位是否为1
                {
                    if(flag == true)
                        putchar(',');
                    flag = true;
                    
                    for(int i = len[cnt]; i >= 1; --i)
                        printf("%d", num[cnt][i]);
                }
                cnt++;  //标记二进制位第几位,即cnt次幂
                n >>= 1;
            }
            puts("");
        }
    
        return 0;
    }
  • 相关阅读:
    花生壳 manjaro 安装
    manjaro+apache+django+mod_wsgi 安装
    arch linux或 Manjaro下安装 微信 wechat deepin-wine-wechat
    BBU+RRU基本介绍
    黑马python01——基础
    NNLearning阶段性总结01
    【信息论】——第二讲
    10.09——今日文章收集
    pygame安装【在pycharm的IDE project下】
    Git笔记——01
  • 原文地址:https://www.cnblogs.com/gabo/p/2466960.html
Copyright © 2011-2022 走看看