2015年阿里研发工程师实习在线笔试题

投递了阿里的C/C++方向研发,昨天晚上参加在线笔试时完全懵了,各种数学题、智力题,以及各种看似风马牛不相及的题目在一起,各位感受下.

题目中涉及到排列组合 基本数学问题等.下面关于以上部分题目给出自己的意见,如果有不对的地方,希望各位指正.

关于数N!有多少个零

思路:给定一个整数N,那么N的阶乘N!末尾有多少个0的问题可以转换为N!乘式中可以分解出多少个5的问题.因为5和其前面的任何一个偶数相乘都会产生0,所以只需求出在由1到N的数中共可以分解出多少个5.例如25!,可以分解出5(1×5)、10(2×5),15(3×5),20(4×5)25(5×5),共可以分解出6个5,所以25!末尾有6个0;

由此可以推知15!最后有3个0…

当然特殊的情况需要注意,比如数字是100,1000这样的情况,还有50,500这样的情况,楼主稍加思考不难得出正确的结论。

例如10!=10×9×8×7×6×5×4×3×2×1=2×5×9×8×7×6×5×4×3×2×1(含2个5,所以结果末尾有两个0)

/*
  Name: n!.cpp
  Copyright: 52coder.net
  Author: HeHe.wang
  Date: 03-04-15 10:58
  Description: 程序用户确定N!(n的阶乘结果有多少个0)
*/
#include<stdio.h>

int ZeroNum(int n)
{
    int j,num=0;
    for(int i=n;i>1;i--)
    {
            j=i;
            while(j%5==0)
            {
               num++;
               j/=5;
            }
    }

    return num;
}
int main()
{
    int n=100;
	printf("%d",ZeroNum(n));
}

问题二:0-999999中任何一位都不包含数字1的数字个数:

看到这题第一遍我就在百度、google,不过没有任何发现,我想现在如果在百度的话应该会有发现.

一开始我写了下面的程序求0-999999中任何一位都不包含数字1的数字个数

我的思路是求出0-999999含有1的个数,然后999999减去含有1的数字

因为计算是从0-999999,所以最后计算的时候是n+1-count

实际上使用排列组合更简单9×9×9×9×9×9=531441

#include <stdio.h>

int count(int n)
{
    while(n!=0)
    {
        if(n%10==1)
            return 1;
        n/=10;
    }
    return 0;
}

int main()
{
    int icount=0;
    int n;
    scanf("%d",&n);
    for(int i=0;i<=n;i++)
    {
        icount+=count(i);

    }
    printf("%d\n", n+1-icount);
}

其余的几道题排列组合相对比较简单,真正考c/c++的题不多,我居然没想到把代码复制到编译器里运行一遍,而是自己运算,我还是太单纯了呀.

欢迎各位留言讨论,指出有错的地方.

时间: 2024-10-04 11:37:32

2015年阿里研发工程师实习在线笔试题的相关文章

2015年阿里研发工程师实习笔试选择题

投递了阿里的C/C++方向研发,参加在线笔试时完全懵了,各种数学题.智力题,以及各种看似风马牛不相及的题目在一起,各位感受下. 题目中涉及到排列组合 基本数学问题等.下面关于以上部分题目给出自己的意见,如果有不对的地方,希望各位指正. 关于数N!有多少个零 思路:给定一个整数N,那么N的阶乘N!末尾有多少个0的问题可以转换为N!乘式中可以分解出多少个5的问题.因为5和其前面的任何一个偶数相乘都会产生0,所以只需求出在由1到N的数中共可以分解出多少个5.例如25!,可以分解出5(1×5).10(2

2015微软实习在线笔试题 - Professor Q&#39;s Software

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Professor Q develops a new software. The software consists of N modules which are numbered from 1 to N. The i-th module will be started up by signal Si. If signal Si is generated multiple times, the i-th module

百度实习在线笔试题【逆序问题】

自己写的代码,未经测试 ////baidu实习岗在线测评 ////一组01的二进制字符串,要求不为逆序,需要交换几次位置. // #include <iostream> #include <vector> using namespace std; typedef struct{ unsigned int num; vector<char*> data; }SInput; void pInputData(SInput &input) { int i; cin>

记一次失败的笔试(华为研发工程师-汽水瓶笔试题)

#include<iostream> #include<fstream> using namespace std; int comp(int buttle, int current, int &drink); int main(void) { int n[10] = { 0,0,0,0,0,0,0,0,0,0 }; int N,i=0; ifstream infile("test.txt", ios::in); while (infile >>

2015年阿里巴巴校招研发工程师在线笔试题汇总

在线笔试题汇总 卷一: 1.下面的函数中哪个是系统调用而不是库函数______? printf scanf fgetc read print_s scan_s 2.某足球队有四名外援,分别来自巴西.荷兰.意大利和美国.他们分别擅长前锋.后卫或守门,其中: ① 美国外援单独擅长守门: ② 意大利外援不擅长前锋: ③ 巴西外援和另外某个外援擅长相同的位置: ④ 荷兰外援擅长的位置和巴西外援不同. 以上条件可以推出巴西外援擅长的位置是______. 前锋 守门 后卫 前锋或守门 后卫或守门 前锋或后卫

2015阿里巴巴前端实习生在线笔试题

Summary 大公司开始招实习生了,我也变成过来人了,品味到之前的酸甜苦辣,除了加油好像也没法说那么多. 因为是你在奋斗,心态这件事是你们在掌握的.但是我们唯一能提供的是我们topview实验室新鲜出炉的面经和笔试. (其实我在想有没应届生春招 - -!) Where 2015阿里巴巴前端实习生在线笔试题

2015.8.29某高级企业的在线笔试题

收集了今年阿里的在线笔试题,贴出来供需要的朋友参考. 1.下面的函数中哪个是系统调用而不是库函数______?printfscanffgetcreadprint_sscan_s 2.某足球队有四名外援,分别来自巴西.荷兰.意大利和美国.他们分别擅长前锋.后卫或守门,其中:① 美国外援单独擅长守门:② 意大利外援不擅长前锋:③ 巴西外援和另外某个外援擅长相同的位置:④ 荷兰外援擅长的位置和巴西外援不同.以上条件可以推出巴西外援擅长的位置是______.前锋守门后卫前锋或守门后卫或守门前锋或后卫 3

2014阿里巴巴WEB前端实习生在线笔试题

2014年3月31日晚,我怀着略微忐忑的心情(第一次在线笔试^_^!!)进行了笔试,阿里巴巴的笔试题共有10道,几乎包含了Web前端开发的各个方面,有程序题.有叙述题,时间非常紧张,只完成了大概6道题.下面把遇到的题目跟大家分享一下! 1. <pre name="code" class="html"><!doctype html> <html> <head> <style type="text/css&

48行代码解一道亚马逊的在线笔试题

这题是我从这里看到的一道亚马逊的在线笔试题,具体规则请前往该文章查看,下面贴出我的解题代码: 其中11,12,13,14分别代表J,Q,K,A; class CardCompare { private int[] cards = new int[] { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; public bool CompareCards(int[] cards1, int[] cards2) { return cardsScore(card