轻院 2177 小姐姐的忠告:少吃辣条多刷题

题目链接https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=2177

题目大意:n个球放入n个箱子中,每个箱子放一个。每个球都是独一无二的,问方案数能被最大2的几次方整除。

解题思路:很明显方案数目就是n!,而所求的实际上是2~n中每个数的中有几个2.显然奇数可忽略,对于1~n的所有偶数来说,一次除二之后所有数都缩小了一半,即相当于求1~n/2的所有偶数,反复如此,可以很快得到思路。

代码:

 1 const int inf = 0x3f3f3f3f;
 2 const int maxn = 1e6 + 5;
 3 int n;
 4  
 5 int solve(){
 6     int x = n >> 1, ans = 0;
 7     while(x > 0){
 8         ans += x; 
 9         x >>= 1;
10     }
11     printf("%d\n", ans);
12 }
13 int main(){
14     int t;
15     scanf("%d", &t);
16     while(t--){
17         scanf("%d", &n);
18         solve();
19     }
20 }

题目:

2177: 小姐姐的忠告:少吃辣条多刷题

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 82  Solved: 35

SubmitStatusWeb Board

Description

平时大家都爱吃零食,但是大家知道吗?这些零食中大多数都是垃圾食品,它对我们身体的危害是很严重的。
最近,赵老师在进教室时常常闻到一股怪味,觉得有同学在吃垃圾食品,老师就开始查,果然,有个同学在吃辣条。于是,赵老师在班上举行了一次讨论会,要大家就“垃圾食品危害健康”这问题发表看法。
讨论会开始了,有的同学介绍了垃圾食品的危害,有的提醒我们不要去买,还有的说了垃圾食品的特点。
GJJ同学对于辣条并不感兴趣。聪明的他遇到了KKK,KKK问了聪明的他一个略显复杂的题目,虽然这个问题对于聪明的他来说问题不大,但是由于聪明的他比较懒,懒得去算,再加上昨晚修仙,今天他只想睡觉。所以,希望大家帮助KKK解决了这个问题,给你n个箱子和n个糖果,每个糖果都是独一无二的,n个箱子有序的摆成一排,箱子编号为1-n,然后要求你把n个糖果放进n个箱子中,那么可以得到一共有多少种方案。
显然这个方案数可以被2^M整除(M为一个非负整数),求M最大为多少?

Input

第一行输入一个t(t<=1e5),表示有t组数据
每组数据输入一个n(n为int范围内的正整数)

Output

输出一个整数(int范围内),输出占一行

Sample Input

2 1 100000000

Sample Output

0 99999988
posted @ 2017-08-18 21:16  EricJeffrey  阅读(137)  评论(0编辑  收藏  举报