题意:
给你一个n,找共有多少种组个方式
思路:
其实这个东西就是个幌子,真正让你求的其实就是n个数字总共有多少种排列方式,也就是
次,而题目给的数字较大,需要大数板来写
一般来说这个是需要大数板来写的,但是看大佬的代码看到了一个神奇的东西,代码如下
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
double n;
cin>>n;
cout <<fixed<<setprecision(0)<<pow(2,n)<<endl;
}
return 0;
}
简单粗暴一行过,不过这个也是会报长度问题的,只是这道题刚好只是要求在1000以内,,测试了一下最多好像只能到1023。。。
所以用大数板的常规操作如下
#include<bits/stdc++.h>
using namespace std;
string a;
string Multiply(string s,int x) //大数乘以整形数
{
reverse(s.begin(),s.end());
int cmp=0;
for(int i=0;i<s.size();i++)
{
cmp=(s[i]-'0')*x+cmp;
s[i]=(cmp%10+'0');
cmp/=10;
}
while(cmp)
{
s+=(cmp%10+'0');
cmp/=10;
}
reverse(s.begin(),s.end());
return s;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
if(n==0){
printf("1\n");
continue;
}
a="2";
for(int i=1;i<n;i++){
a=Multiply(a,2);
}
printf("%s\n", a.c_str());
}
}