2067 - 函数
时间限制 : 1 秒
内存限制 : 128 MB
MiaoWu定义了几种函数:
C(n,k) 表示从n个物品中选出k个物品的方案数,用数学表达式就是 C(n,k)=(n!)/((k!)*(n-k)!)
G(S) 表示集合S中所有元素的最大公约数,如果S={x1,x2,x3,...,xn},那么数学表达式就是 G(S)=gcd(x1,x2,x3,...,xn)
F(n) 是新定义的一种能够表示喵星数学的函数,用数学表达式表示就是 F(n)= G({C(2*n,1),C(2*n,3),C(2*n,5),...,C(2*n,2*n-1)}) ;
例如:F(6)=G(C(12,1),C(12,3),C(12,5),C(12,7),C(12,9),C(12,11))=G(12,220,792,792,220,12)=4
现在MiaoWu希望你能够帮助他快速求出这种函数的值。
题目输入
每行输入一个n,输入到文件结束。(2<=n<=10^9)
题目输出
每行输出M(n)的值。
输入/输出样例
输入格式
6 5 4
输出格式
4 2 8
C++解答
#include<stdio.h> #include<math.h> long long t,p,n,ans; int main() { //freopen("1.txt","r",stdin); //freopen("2.txt","w",stdout); while(~scanf("%lld",&n)) { p=1; while(n%2==0) p++,n/=2; printf("%.0lf\n",pow(2,p)); } }
Java解答
import java.io.BufferedReader; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.*; public class Main{ public static void main(String args[]){ Scanner cin=new Scanner(System.in); while(cin.hasNext()){ long n=cin.nextLong(); long ans=2; while(n%2==0){ n/=2; ans*=2; } System.out.println(ans); } } }