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;
    }
  • 相关阅读:
    poj 2728 Desert King
    uva 439 Knight Moves
    hdu 1875 畅通工程再续
    scau实验题 8600 骑士周游问题(有障碍物)
    scau实验题 8596 Longest Ordered Subsequence
    poj 1679 The Unique MST
    uva 527 Oil Deposits
    poj 2533 Longest Ordered Subsequence
    .net 程序员 java 开发入门
    Collation conflict occur at operation on User define funtion & table's column
  • 原文地址:https://www.cnblogs.com/mu-tou-man/p/3894426.html
Copyright © 2011-2022 走看看