zoukankan      html  css  js  c++  java
  • 华为上机题

    1.解析9进制,11进制的字符串为10进制的数字输出,输入的字符串有效位(0v0012345678)长度不超过8位,前面的00不算做有效位。解析后以10进制的数字输出。
    如果解析到非法字符串则返回-1 

    9进制:
     9进制的数的范围:0,1,2,3,4,5,6,7,8
     9进制的开始为:0V或者0v
     9进制的正确实例:0V11 0v564 0V123 0v0784 0V0 0v 0V
     9进制的错误实例:0V923 0vt12 00V21 0123 
     9进制转换为10进制:0V11 -> 10
            0v564 -> 463
     
    11进制:
     11进制的数的范围:0,1,2,3,4,5,6,7,8,9,A(a)
     11进制的开始为:0W或者0w
     11进制的正确实例:0W11 0w564 0W123 0w0A8a 0W 0w
     11进制的错误实例:0WB923 0wVaA 00W21 0WAx123 
     11进制转换为10进制:
            0W11 -> 12
            0w564 -> 675

    #include <math.h>
    
    #include<iostream>
    #include <string>
    using namespace std;
    void main()
    {
        
        string str;
        cin>>str;
        int len=str.length();
        
        char *ch=new char[len];
        for (int i=0;i<len;i++)
        {
            ch[i]=str[i];
        }
        int iRet=0;
        if (ch[0]=='0'&&(ch[1]=='v'||ch[1]=='V'))
        {
            for (int i=len-1;i>1;i--)
            {
                if (ch[i]>'8'||ch[i]<'0')
                {
                    cout<<-1;
                    return;
                }
                iRet+=(ch[i]-'0')*((int)pow(9.0,len-1-i));
            }
        }
        else if (ch[0]=='0'&&(ch[1]=='w'||ch[1]=='W'))
        {
            for (int i=len-1;i>1;i--)
            {
                if (ch[i]!='a'&&ch[i]!='A'&&(ch[i]>'9'||ch[i]<'0'))
                {
                    cout<<-1;
                    return;
                }
                if (ch[i]=='a'||ch[i]=='A')
                {
                    ch[i]='0'+10;
                }
                iRet+=(ch[i]-'0')*((int)pow(11.0,len-1-i));
            }
        }
        else
             {
                 cout<<-1;
                  return;
             }
        cout<<iRet;
        
    }

     2.一条长廊里依次装有n(1 ≤ n ≤ 65535)盏电灯,从头到尾编号1、2、3、…n-1、n。每盏电灯由一个拉线开关控制。开始,电灯全部关着。有n个学生从长廊穿过。第一个学生把号码凡是1的倍数的电灯的开关拉一下;接着第二个学生把号码凡是2的倍数的电灯的开关拉一下;接着第三个学生把号码凡是3的倍数的电灯的开关拉一下;如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下。n个学生按此规定走完后,长廊里电灯有几盏亮着。

    #include <iostream>
    #include <vector>
    using namespace std;
    void main()
    {
        int putnum=0;
        int outnum=0;
        cin>>putnum;
        vector<int>p(putnum+1,0);
        for (int i=1;i<putnum+1;i++)
        {
            for (int index=i;index<putnum+1;index+=i)//idex步长和idex初始化
            {
                p[index]=!p[index];
            }
        }
        for (int i=1;i<putnum+1;i++)
        {
            if (p[i]==1)
            {
                outnum++;
            }
        }
        cout<<outnum;
    }
  • 相关阅读:
    C语言|作业07
    Cookie应用
    刷新页面,怎么做到不提示“不重新发送消息,则无法刷新页面”
    笔记
    笔记
    元素内部设定position
    企业微信正式发布 Tita 绩效宝,助力企业完成数字化绩效管理转型
    OKR实践:如何获得高层的理解与关注
    OKR:衡量结果和解决实际问题
    2022 年绩效评估,HR看这一篇就够了!
  • 原文地址:https://www.cnblogs.com/mu-tou-man/p/3894426.html
Copyright © 2011-2022 走看看