zoukankan      html  css  js  c++  java
  • 【洛谷p1066】2^k进制数

    (不会敲键盘惹qwq)

    2^k进制数【传送门】

    算法标签:

    (又是一个提高+省选-的题)


    如果我说我没听懂你信吗

    代码qwq:

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    using namespace std;
    int a[4][512][201],tot[201],mmax;
    int pow(int a,int b)
    {
        int ans=1,with=a;
        while(b)
        {
            if(b&1) ans*=with;
            with*=with;
            b>>=1;
        }
        return ans;
    }
    void jiafa(int j[],int a[])
    {
        int lb=1;
        while(lb<=j[0]||lb<=a[0])
        {
            j[lb]+=a[lb];
            if(j[lb]>=10) 
            {
                j[lb]%=10;
                j[lb+1]++;
            }
            lb++;
        }
        while(j[lb]>=10) 
        {
            j[lb]%=10;
            lb++;
            j[lb]++;
        }
        while(!j[lb]&&lb>0) lb--;
        if(lb>j[0]) j[0]=lb;
    }
    void jiafa1(int a[],int b)
    {
        int lb=0;
        while(b)
        {
            a[++lb]=b%10;
            b/=10;
        }
        a[0]=lb;
        jiafa(tot,a);
    }
    int main()
    {
        int k,w;
        cin>>k>>w;
        int g=w/k;
        bool youyu=0;
        int mmax2;
        if(w%k)
        {
            g++;
            youyu=1;
            mmax2=pow(2,w%k)-1;
        } 
        mmax=pow(2,k)-1;
        for(int i=1;i<mmax;i++) jiafa1(a[0][i],mmax-i);
        int l=0,n=1;
        for(int i=3;i<=g;i++)
        {
            if(i==g&&youyu&&mmax2<mmax)
            {
                for(int i=mmax-1;i>mmax2;i--)
                    jiafa(a[n][mmax2],a[l][i]);
                jiafa(tot,a[n][mmax2]);
                for(int j=mmax2-1;j>=1;j--)
                {
                    memcpy(a[n][j],a[n][j+1],sizeof(a[n][j+1]));
                    jiafa(a[n][j],a[l][j+1]);
                    jiafa(tot,a[n][j]);
                }
                break;
            } 
            jiafa(a[n][mmax-1],a[l][mmax]);
            jiafa(tot,a[n][mmax-1]);
            for(int j=mmax-2;j>=1;j--)
            {
                memcpy(a[n][j],a[n][j+1],sizeof(a[n][j+1]));
                jiafa(a[n][j],a[l][j+1]);
                jiafa(tot,a[n][j]);
            }
            for(int j=1;j<=mmax;j++)
            memset(a[l][j],0,sizeof(a[l][j]));
            n++;l++;
            if(n==3) n=0;
            if(l==3) l=0;
        }
        int lt=tot[0];
        while(!tot[lt]&&lt>1) lt--;
        for(;lt>0;lt--) cout<<tot[lt];
        return 0;
    }//装作是自己写的样子

    end-

  • 相关阅读:
    串的模式匹配问题
    游戏手柄directinput编程
    Hibernate的generator属性的意义
    MySQL——基础入门
    IEbug——li标签之间的空隙
    struts2 jar包详解
    hibernate自动建库(MySQL)
    hibernate参数一览表
    js中的逻辑运算符
    hibernate的离线关联(多级)查询
  • 原文地址:https://www.cnblogs.com/zhuier-xquan/p/10666625.html
Copyright © 2011-2022 走看看