华师一附中OI组
标题:
20210811网课第三题 求c(m,n)
[打印本页]
作者:
admin
时间:
2021-8-11 09:11
标题:
20210811网课第三题 求c(m,n)
m n<=1000
作者:
孔某某某
时间:
2021-8-11 17:50
#include <bits/stdc++.h>//失败的程序
using namespace std;
int m[1010],n[1010],a[10000],c[10000],d[10000];
string sum;
string gaocheng(string s,int x)
{
s="1";
int l=s.size(),k=0,x1=0;
for (int i=0;i<l;i++)
a[i]=s[l-1-i]-'0';
while (x>0)
{
c[k]=x%10;
k++;
x/=10;
}
for (int i=0;i<k;i++)
{
x1=0;
for (int j=0;j<l;j++)
{
d[i+j]=d[i+j]+x+a[l-1-j]*c[i];
x=d[i+j]/10;
d[i+j]%=10;
}
d[i+l-1]=x;
}
for (int i=0;i<l+k;i++)
s[i]=d[l+k-i]+'0';
memset(a,0,10000);
memset(c,0,10000);
memset(d,0,10000);
return s;
}//不会把高精度函数的值用字符串的形式返回出来(总之就是感觉函数写错了,但不知道是怎么错了)
int main()
{
int m1,n1,temp1,temp2;
cin>>m1>>n1;
temp1=m1;
temp2=n1;
for (int i=1; i<=n1; i++)
{
m[i]=m1;
m1--;
}
for (int i=1; i<=temp2; i++)
{
n[i]=n1;
n1--;
}
m1=temp1;
n1=temp2;
for (int i=1; i<=n1; i++)
{
for (int j=1; j<=n1; j++)
{
if (m[j]%n[i]==0)
{
m[j]=m[j]/n[i];
break;
}
}
}
for (int i=1; i<=n1; i++)
sum=gaocheng(sum,m[i]);
cout<<sum;
return 0;
}
复制代码
作者:
孔某某某
时间:
2021-8-11 17:52
#include <bits/stdc++.h>//低精度
using namespace std;
int m[1000],n[1000];
int main()
{
int m1,n1,temp1,temp2,sum=1;
cin>>m1>>n1;
temp1=m1;
temp2=n1;
for (int i=1; i<=n1; i++)
{
m[i]=m1;
m1--;
}
for (int i=1; i<=temp2; i++)
{
n[i]=n1;
n1--;
}
m1=temp1;
n1=temp2;
for (int i=1; i<=n1; i++)
{
for (int j=1; j<=n1; j++)
{
if (m[j]%n[i]==0)
{
m[j]=m[j]/n[i];
break;
}
}
}
for (int i=1; i<=n1; i++)
sum=sum*m[i];
cout<<sum;
return 0;
}
复制代码
作者:
651979223
时间:
2021-8-11 18:35
#include<bits/stdc++.h>
using namespace std;
int m,n;//c(m,n)
const int mn=5000;
long long a[mn],b[mn],c[mn],i,f,e;
int main()
{
cin>>m>>n;
for(i=m-n+1;i<=m;i++)
a[i]=i;
for(int k=1;k<=n;k++)
b[k]=k;
for(i=m-n+1;i<=m;i++)
for(int k=1;k<=n;k++)
if(a[i]%b[k]==0)
{
a[i]/=b[k];
b[k]=1;
}
int g=0;c[0]=1;f=0;//到第几位
for(i=m-n+1;i<=m;i++)
{
for(e=0;e<=g;e++)
c[e]*=a[i];
if(c[e]>9)
{
c[e+1]+=c[e]/10;
c[e]%=10;
f++;
}
}
for(int k=f;k>=0;k--)
cout<<c[k];
return 0;
}
复制代码
作者:
张宇航
时间:
2021-8-13 10:26
活学活用
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[10010];
void pp()
{
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
cout<<endl;
}
void c(int i)
{
if(i>n)
pp();
else
for(int k=a[i-1]+1;k<=m;k++)
{
a[i]=k;
c(i+1);
}
}
int main()
{
cin>>m>>n;
a[0]=0;
c(1);
return 0;
}
复制代码
作者:
admin
时间:
2021-8-13 20:35
楼上好牛 ! 可是你这个只能算到10
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2