zoukankan      html  css  js  c++  java
  • P5000 【Hillwer编码】

    这题也没啥,主要是高精乘低精

    对于 R 先 %26,然后加一遍,超过 90 的就 26 ,然后输出字符串

    开始乘

    答案为 ans 数组, ans[0] 表示位数,因为是乘法,所以初值 ans[0]=ans[1]=1

    每次乘法先对 ans 中每一位乘上低精的那个,然后进位就行了。

    最后倒序输出。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    const int maxn=605;
    int n,r,len,g,now;
    char ch[maxn];
    int ans[maxn<<2];
    inline void mul(int a1[],int x){
        for(int i=1;i<=a1[0];++i)
            a1[i]*=x;
        g=0;
        for(int i=1;i<=a1[0];++i){
            now=g;
            g=(a1[i]+g)/10;
            a1[i]=(a1[i]+now)%10;
        }
        while(g){
            a1[++a1[0]]=g%10;
            g/=10;
        }
        if(a1[a1[0]+1]>=1) a1[0]++;
        while(a1[a1[0]]==0&&a1[0]>1)--a1[0];
    }
    int main(){
        scanf("%d%d",&n,&r);
        r%=26;
        for(int i=1;i<=n;i++){
            memset(ans,0,sizeof(ans));
            ans[0]=ans[1]=1;
            scanf("%s",ch+1);
            len=strlen(ch+1);
            for(int j=1;j<=len;++j)
                ch[j]=(ch[j]+r)>90?ch[j]+r-26:ch[j]+r;
            printf("%s
    ",ch+1);
            for(int i=1;i<=len;++i)
                mul(ans,ch[i]);
            for(int i=ans[0];i>=1;--i)
                printf("%d",ans[i]);
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    maven安装和配置
    maven的安装和配置
    mac上pydev
    Android自动化----adb shell,appium,uiautomator2
    Django
    centos操作---搭建环境 安装python
    Linux系统centos中sudo命令不能用----提升权限
    python---numpy
    python-socket
    Le x820 的刷机记录
  • 原文地址:https://www.cnblogs.com/sanjinliushi/p/11581424.html
Copyright © 2011-2022 走看看