记一次大厂笔试

记第一次笔试

今天笔者参加了某大厂的笔试,第一题大致题目是这样的:

有一个整数n ( 1<=n<=1000000000),最多有n个人组成队列,并从中选取一位当队长,求共可以组成多少队伍(其中队长不同视为不同的队伍比如( 1(队长), 2 )和(1,2(队长)) )表示不同的两个队伍。输出最多有多少个队伍对1000000007取模;

示例

输入

2

输出

4

分析队伍数分别为

(1) (2) (1,2) (1,2)其中斜体表示队长

我刚开始是这样分析的

若n = 3 时,队伍数就是

1)(2)(3)(12)(12)(13)(13)(23)(23)(123)(123)(123

于是我得出了一个结论:

三个选一个队长的选择只有一种

三个选两个队长的选择有两种

三个选三个队长的选择有三种

总数也就是 = 三个选一个 * 1 + 三个选两个 * 2 + 三个选三个 * 3

也就是
C^1_3 + 2C^2_3 + 3C^3_3
那么得出通项公式
result = \sum_{i=1}^niC^i_n
问题就变成了求
C^i_n
因为
C^m_n = \frac{A^m_n} {m!} = \frac{n!}{m!(n - m)!} = C^{n-m}_n
接下来我开始研究阶乘,最后终于把代码写好了,开开心心的填上去一运行,通过了0%的测试用例,我打开了IDEA进行调试发现当你= 100 是 抛出了 by/zero 的异常,原来当n很大时整数溢出最后导致阶乘结果为0,我将int改成了long,BigDecimal 还是存在问题,后来我转换思路看看能不能举例找出通项

n = 1   result = 1
n = 2   result = 4
n = 3   result = 12
n = 4   result = 32
n = 5   result = 80
...

果不其然我找到了规律
result = n * 2^{n - 1}
这样问题转换成了求2^(n-1),我想起了位运算求2的幂次方,经过了一顿操作之后,我提交上去还是提示通过了0%的示例,同样当n足够大时还是溢出了。。。。不一会时间到了,我还没有来的及看第二题就结束了。

交卷之后我看了牛客网的帖子,有大牛说用快速幂就出来了,我去百度了一下什么是快速幂

https://blog.csdn.net/qq_40693171/article/details/84196079

首先要知道 (a * b)%c=(a%c)(b%c)*

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        for (int i = 0; i < t; i++) {
            long b = sc.nextLong();
            long c = 1000000007;
            long a = 2;
            long res = 1;
            a %= c;
            for (; b != 0; b /= 2) {
                if (b % 2 == 1)
                    res = (res * a) % c;
                a = (a * a) % c;
            }
            System.out.println(res);
        }
    }
}

后来我套了模板

import java.util.Scanner;

public class Alibaba {


    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        System.out.println(fun2(x));
    }

    final static int M=1000000007;
    private static long fun1(int n){
        if(n==0) return 1;
        if(n==1) return 2;
        long ans=1;
        long base=2;
        while(n!=0){
            if((n&1)==1) ans=((ans%M)*(base%M))%M;
            base=((base%M)*(base%M))%M;
            n>>=1;
        }
        return ans%M;
    }
    //n*2^(n-1) % 1000000007
    private static int fun2(int n){
        return (int) (((n%M)*(fun1(n-1)%M))%M);
    }
}

调试未发现问题

通过这次笔试真的发现了自己与其他人差距甚大

coding everyday,everyday coding

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,345评论 0 2
  • One 1 the [ðə, ði:] art.这,那 ad.[用于比较级;最高级前] 2 be [bi:,bi]...
    梁培林阅读 9,297评论 0 10
  • 前几天刚陪爸妈去电影院看了《神秘巨星》,不得不说阿米尔汗的催泪功夫实在了得,全场观众的抽泣声此起彼伏。阿米尔汗继《...
    忆言如晤阅读 415评论 0 2
  • 王小姐芳龄28了,被相亲很久了。 这个对象她妈妈催她见面好几次了,她都不愿意。 最近有一个大活动,王小姐和母亲一起...
    朝颜阅读 525评论 2 4
  • 无记录不发生,非常感谢金凤老师的组织,我们在特别舒适的“博览书店”聚会,与伙伴们相聚在这里,畅所欲言,收获满满,期...
    美妆博主樱子阅读 392评论 0 1