zoukankan      html  css  js  c++  java
  • 17倍

    题目描述
    学习程序设计的Lanlan记得老师给她布置的第一个任务是:输入一个数N,然后输出17*N的值。当然这个任务非常简单,经过一段时间的学习,兰兰有了一些的进步,老师又布置了一个类似的任务,只是变更了一个条件,输入的N是一个二进制数,输出的值也要是二进制表示的。
    现在请帮助Lanlan完成这个任务。

    输入
    一个二进制表示的数N。

    输出
    二进制表示的17*N。

    样例输入
    复制样例数据
    10110111
    样例输出
    110000100111

    提示
    10110111相当于十进制的183,于是183*17=3111,二进制形式是110000100111。

    30%的数据N的位数小于25位
    50%的数据N的位数小于50位
    100%的数据N的位数小于1000位

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    #define N 2000
    char s[N],b[N];
    int ss[N],aa[N],ans[N];
    int main()
    {
        int x=0,i;
        char a[N]={'0','0','0','0'};
        scanf("%s",s);
        strcpy(b,s);
        strcat(s,a);
        strcpy(a,b);
        int stra=strlen(a);
        int strs=strlen(s);
        int len=max(stra,strs);
        for(i=stra-1;i>=0;i--)
        {
            aa[x++]=a[i]-'0';
        }
        x=0;
        for(i=strs-1;i>=0;i--)
        {
            ss[x++]=s[i]-'0';
        }
        for(i=0;i<len;i++)
        {
            ans[i]=ans[i]+ss[i]+aa[i];
            if(ans[i]>1)
            {
                ans[i]=ans[i]%2;
                ans[i+1]++;
            }
        }
        int temp;
        if(ans[len]>0)
            temp=len;
        else
            temp=len-1;
        for(i=temp;i>=0;i--)
        {
            printf("%d",ans[i]);
        }
        return 0;
    }
    
    

    二进制高精度。
    哈哈哈。
    long long 只能承受2的62次方哟

  • 相关阅读:
    win32-LPCSTR->String
    win32-UpdateLayeredWindow
    win32-CreateDIBSection的使用
    win32-StretchDIBits
    hdu1978 简单记忆化搜索
    hdu1978 简单记忆化搜索
    hdu4530 水题
    hdu4530 水题
    hdu3006 状态压缩+位运算+hash(小想法题)
    hdu3006 状态压缩+位运算+hash(小想法题)
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319584.html
Copyright © 2011-2022 走看看