提交时间:2023-08-09 17:18:19

运行 ID: 81627

#include<bits/stdc++.h> using namespace std; //compare比较函数:相等返回0,大于返回1,小于返回-1 int compare(string str1,string str2) { if(str1.length()>str2.length()) return 1; else if(str1.length()<str2.length()) return -1; else return str1.compare(str2); } string add(string str1,string str2)//高精度加法 { string str; int len1=str1.length(); int len2=str2.length(); //前面补0,弄成长度相同 if(len1<len2) { for(int i=1;i<=len2-len1;i++) str1="0"+str1; } else { for(int i=1;i<=len1-len2;i++) str2="0"+str2; } len1=str1.length(); int cf=0; int temp; for(int i=len1-1;i>=0;i--) { temp=str1[i]-'0'+str2[i]-'0'+cf; cf=temp/10; temp%=10; str=char(temp+'0')+str; } if(cf!=0) str=char(cf+'0')+str; return str; } string two(long long n){ string ans="1"; while(n--){ ans=add(ans,ans); } return ans; } int main(){ long long t,n; cin>>t>>n; if(t==1){ cout<<n*(n-1)/2; }else if(t==2){ cout<<n*(n-1)/2*(n-2)/3*(n-3)/4; }else if(t==3){ cout<<two(n); } return 0; }