zoukankan      html  css  js  c++  java
  • HDU2030

    思路

    首先需要知道:一个汉字在字符串中是以两个负的字符形式存储。(计算机中补码第一位是符号位,1为负数,所以 汉字机内码的每个字节表示的十进制数都是负数)
    所以该题我们则需要遍历字符串,找出ASCII为负的进行累加,
    因为问的是汉字个数,所以累加的结果除以2即可,
    汉字机内码:使用二个字节,每个字节最高位为1,用它来表示一个汉字,在用到这个字时,系统按这个编号去找它的点阵信息,然后把它显示出来。

    Q

    clion显示的和样例给出的答案不一样 导致我一直以为是我的代码问题
    为什么显示不对

    AC代码

    //#include<bits/stdc++.h>
    #include<iostream>
    #include<string.h>
    #include<algorithm>
    #include<stdio.h>
    #include<cmath>
    #include<list>
    #include<stdlib.h>
    #include<map>
    #include<stack>
    #include<stdio.h>
    #include<queue>
    
    using namespace std;
    typedef long long ll;
    #define sc(T) scanf("%d",&T)
    #define scc(x,y) scanf("%d %d",&x,&y)
    #define pr(T) printf("%d
    ",T)
    #define f(a,b,c) for (int a=b;a<=c;a++)
    #define ff(a,b,c) for (int a=b;a>=c;a--)
    #define inf 0x3f3f3f3f
    #define mem(a,b) memset(a,b,sizeof(a))
    #define eps 1e-9
    #define PI acos(-1)
    const int N=1e5+20;
    
    char s[N];
    
    int main()
    {
        int T;
        cin>>T;
        getchar();
        while(T--)
        {
            //getchar();
            gets(s);
            int l=strlen(s);
            //cout<<l<<"**"<<endl;
            int w=0;
            f(i,0,l-1)
            {
                if(s[i]<0)
                    w++;
            }
            cout<<w/2<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    由铭心提供的免费邮箱
    BT面板安装教程
    Onedrive分享型网盘搭建
    cookie与session
    IntelliJ Idea 2017 免费激活方法
    什么情况下出现的redis
    tomcat编码问题
    idea启动项目报Unable to open debugger port (127.0.0.1:11480): java.net.SocketException "socket closed"
    Sentry异常捕获平台
    亚瑟·阿伦博士的36个问题
  • 原文地址:https://www.cnblogs.com/OFSHK/p/13643783.html
Copyright © 2011-2022 走看看