zoukankan      html  css  js  c++  java
  • PAT乙级-1057. 数零壹(20)

    给定一串长度不超过105的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0、多少1。例如给定字符串“PAT (Basic)”,其字母序号之和为:16+1+20+2+1+19+9+3=71,而71的二进制是1000111,即有3个0、4个1。

    输入格式:

    输入在一行中给出长度不超过105、以回车结束的字符串。

    输出格式:

    在一行中先后输出0的个数和1的个数,其间以空格分隔。

    输入样例:

    PAT (Basic)
    

    输出样例:

    3 4
    
    可以说是贼奇怪了
    啊我的if错在哪里啊啊啊 为什么什么字符都会去加 明明我有写限定啊啊啊啊
    //心痛的贴上自己不知道为什么错了的错误代码
    #include<iostream>
    #include<string.h>
    using namespace std;
    int add(char*);
    int main(){
        char str[100001];
        cin.get(str, 100001);
        int length = strlen(str);
        int a[2] = { 0, 0 };
        int sum = add(str);
        for (int i = 0; sum >= 1; i++)
        {
            int temp;
            temp = sum % 2;
            
            if (temp == 0)
                a[0]++;
            else
                a[1]++;
            sum = sum / 2;
        }
        cout << a[0] << " " << a[1];
        cin.get();
        cin.get();
        return 0;
    }
    int add(char* a)
    {   
        int length;
        length = strlen(a);
        int sum = 0;
        for (int i = 0; i < length; i++)
        {
            if ('A' <= a[i] <= 'Z')
            {
                sum += a[i] - 'A' + 1;
            }
            if ('a' <= a[i] <= 'z')
            {
                sum += a[i] - 'a' + 1;
            }
        }
        return sum;
    }
    //请告诉我我和大佬的代码之间到底差个啥
    #include<stdio.h>
    #include<ctype.h>
    #include<string.h>
    #define MAX 100000
    
    int add(char* a);
    int main()
    {
        
        int  num0 = 0, num1 = 0, check, sum;
        char input[MAX];
        gets_s(input);
        sum = add(input);
        while (sum != 0)
        {
            check = sum % 2;
            if (check == 1)num1++;
            else num0++;
            sum /= 2;
        }
        printf("%d %d", num0, num1);
        return 0;
    }
    int add(char* a)
    {
        int sum = 0;
        int len = strlen(a);
        for (int i = 0; i < len; i++)
        {
            if (isupper(a[i]))
            {
                a[i] += 'a' - 'A';
            }
            if (islower(a[i]))
            {
                sum += (int)(a[i] - 'a' + 1);
            }
        }
        return sum;
    }
    
    
    
    
    
  • 相关阅读:
    是什么阻止你达成人生的目标?
    安装cocoa pods
    Mac安装mysql
    Mac安装jee开发环境,webservice环境搭建
    Mac使用Github
    从一个app开始学iOS
    Macbook Pro开机黑屏了。
    U盘安装OSX
    数据分析有时候的结果并不令人满意
    vmvare fusion 8
  • 原文地址:https://www.cnblogs.com/lanmaos/p/7497871.html
Copyright © 2011-2022 走看看