加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

华为机试—竞赛 西安2016届校园招聘练习(A卷)

发布时间:2020-12-14 02:30:06 所属栏目:大数据 来源:网络整理
导读:一、整数分隔 使用递归的话肯定会溢出,只能用迭代 import java.util.Scanner; public class Main { // public static long foo(int n) // { // if(n==1) // return 1; // else // { // if(n%2==0) // return foo(n-1)+foo(n/2); // else // return foo(n-1)

这里写图片描述

一、整数分隔

这里写图片描述


这里写图片描述

使用递归的话肯定会溢出,只能用迭代

import java.util.Scanner;

public class Main {

    // public static long foo(int n)
    // {
    // if(n==1)
    // return 1;
    // else
    // {
    // if(n%2==0)
    // return foo(n-1)+foo(n/2);
    // else
    // return foo(n-1);
    // }
    // }

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        while (s.hasNextInt()) {
            int n = s.nextInt();
            int[] f = new int[1000001];
            f[1] = 1;

            for (int i = 2; i <= n; i++) {
                if (i % 2 == 0)
                    f[i] = (f[i - 1] + f[i / 2]) % 1000000000;
                else
                    f[i] = f[i - 1];
            }

            System.out.println(f[n]);
        }

    }

}

二、大数求和

这里写图片描述


位操作法http://www.voidcn.com/article/p-flhqsgly-bah.html
Java的BigDecimal类http://www.voidcn.com/article/p-khoaurot-bah.html

三、整数排序

这里写图片描述

#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    string str;
    cin >> str;
    vector< int > ivec;
    int len = str.size();
    int bi=0,ei=0,num=0,dim=1;
    for(int i=0; i < len; i++)
    {
        if(str[i] == ',' || i == len-1)
        {
            ei = i;
            if(i == len-1)
                ei=len;
            while(ei > bi)
            {
                num += (str[--ei]- '0')*dim;
                dim *= 10;
            }
            ivec.push_back(num);
            num=0;
            dim=1;
            bi=i+1;
        }
    }
    sort(ivec.begin(),ivec.end());
    int min_num = 0,max_num = 0;
    int len1 = ivec.size();
    for(int i=0; i < len1; i++)
    {
        min_num =max_num = ivec[i];
        cout << min_num << " ";
        while( ivec[i+1] - 1 == ivec[i])
        {
            max_num = ivec[i+1];
            i++;
        }
        if( max_num != min_num)
            cout << max_num << " ";
    }
    ivec.clear();
    return 0;
}
import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        while (s.hasNext()) {
            String str = s.nextLine();
            String[] num = str.split(",");

            int[] a = new int[num.length];

            for (int i = 0; i < num.length; i++) {
                a[i] = Integer.valueOf(num[i]);
            }

            Arrays.sort(a);

            int min_num = 0,max_num = 0;

            for (int i = 0; i < a.length; i++) {
                min_num = max_num = a[i];
                System.out.print(min_num + " ");
                if (i == a.length - 1) 
                    break;

                while (a[i + 1] - 1 == a[i]) {
                    max_num = a[i + 1];
                    i++;
                    if (i == a.length - 1) 
                        break;
                }
                if (max_num != min_num)
                    System.out.print(max_num + " ");
            }
        }

    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读