菜哭。。。
A.不凡的夫夫
传送门:写过了。。。
D.小牛vs小客
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
来源:牛客网
题目描述
小牛和小客玩石子游戏,他们用n个石子围成一圈,小牛和小客分别从其中取石子,谁先取完谁胜,每次可以从一圈中取一个或者相邻两个,每次都是小牛先取,请输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)(1 2 3 4 取走 2 13 不算相邻)
输入描述:
输入包括多组测试数据
每组测试数据一个n(1≤n≤1e9)
输出描述:
每组用一行输出胜利者的名字(小牛获胜输出XiaoNiu,小客获胜输出XiaoKe)
示例1
输入
2 3
输出
XiaoNiu XiaoKe
这道题博弈吗?
代码:
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #include<algorithm> 6 #include<stack> 7 #include<map> 8 #include<vector> 9 #include<queue> 10 #include<set> 11 using namespace std; 12 const int inf=1<<30; 13 const int maxn=1e5+10; 14 const double eps=1e-6; 15 const int mod=1e9+7; 16 typedef long long ll; 17 int main(){ 18 int n; 19 while(~scanf("%d",&n)){ 20 if(n==1||n==2)cout<<"XiaoNiu"<<endl; 21 else cout<<"XiaoKe"<<endl; 22 } 23 return 0; 24 }
E.进击吧!阶乘
时间限制:C/C++ 3秒,其他语言6秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
给定一个整数N(0≤N≤10000),求取N的阶乘
输入描述:
多个测试数据,每个测试数据输入一个数N
输出描述:
每组用一行输出N的阶乘
示例1
输入
1 2 3
输出
1 2 6
最近一堆大数的,头大。
代码:Java
1 import java.math.BigInteger; 2 import java.util.Scanner; 3 4 public class Main { 5 public static void main(String[]args) { 6 Scanner cin=new Scanner(System.in); 7 int n; 8 while(cin.hasNext()) { 9 BigInteger ans,temp; 10 n=cin.nextInt(); 11 ans=BigInteger.valueOf(1); 12 if(n==0) { 13 System.out.println(1); 14 } 15 else { 16 for(int i=1;i<=n;i++) { 17 temp=BigInteger.valueOf(i); 18 ans=ans.multiply(temp); 19 } 20 System.out.println(ans); 21 } 22 } 23 } 24 }
还有一个不是Java的,不是我写的
代码:
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #include<algorithm> 6 #include<stack> 7 #include<map> 8 #include<vector> 9 #include<queue> 10 #include<set> 11 using namespace std; 12 const int inf=1<<30; 13 const int maxn=1e5+10; 14 const double eps=1e-6; 15 const int mod=1e9+7; 16 typedef long long ll; 17 int a[maxn]; 18 int main(){ 19 int n; 20 ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); 21 while(cin>>n){ 22 memset(a,0,sizeof(a)); 23 a[0]=1; 24 int h=1; 25 for(int i=1;i<=n;i++){ 26 int res=0; 27 for(int j=0;j<h;j++){ 28 int temp=a[j]*i+res; 29 a[j]=temp%10; 30 res=temp/10; 31 } 32 while(res){ 33 a[h++]=res%10; 34 res/=10; 35 } 36 } 37 for(int k=h-1;k>=0;k--) 38 cout<<a[k]; 39 cout<<endl; 40 } 41 return 0; 42 }
G.大水题
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld
题目描述
给出一个数n,求1到n中,有多少个数不是2 5 11 13的倍数。
输入描述:
本题有多组输入
每行一个数n,1<=n<=10^18.
输出描述:
每行输出输出不是2 5 11 13的倍数的数共有多少。
示例1
输入
15
输出
4
说明
1 3 7 9
数学题。
代码:
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<cmath> 5 #include<algorithm> 6 #include<stack> 7 #include<map> 8 #include<vector> 9 #include<queue> 10 #include<set> 11 using namespace std; 12 const int inf=1<<30; 13 const int maxn=1e5+10; 14 const double eps=1e-6; 15 const int mod=1e9+7; 16 typedef long long ll; 17 int main(){ 18 ll n,ans; 19 while(~scanf("%lld",&n)){ 20 ans=0; 21 ans+=n/2+n/5+n/11+n/13; 22 ans-=n/(2*5)+n/(2*11)+n/(2*13)+n/(5*11)+n/(5*13)+n/(11*13); 23 ans+=n/(2*5*11)+n/(2*5*13)+n/(2*11*13)+n/(5*11*13); 24 ans-=n/(2*5*11*13); 25 printf("%lld\n",n-ans); 26 } 27 return 0; 28 }
滚去写下一场的。