浙大1202 zoj1202
#include <iostream>
using namespace std;
int n;?
struct countandtime
{
?int count;
?int time;
};
countandtime *divideandcount=new countandtime[n];
int com(int sum1,int len)//計算結果
{
?long all=1;
?for(int a=0;a<len;a++)
?{
??long all1=1;
??long h=1;//重復時再除的數
??for(int b=1;b<=divideandcount[a].time;b++)
??{
???long c=1;//分子
???long d=1;//分母
???h=h*b;
???for(int e=1;e<=divideandcount[a].count;e++)
???{
????c=c*e;
????d=d*(sum1-e+1);
???}
???all1=all1*d/c;
???sum1=sum1-divideandcount[a].count;
??}
??
??all1=all1/h;
??all=all*all1;
?}
?return all;
}
int main()
{
??
?while(cin>>n)
?{
??if(n<1)break;
??if(n>12)break;
??int divide;
??int sum=0;
??int length=0;
??for(int i=0;i<n;i++)
??{
???cin>>divide;
???if(i==0)
???{
????divideandcount[0].count=divide;
????divideandcount[0].time=1;
????length=1;
????sum=divide;
????continue;
???}
??
???for(int k=0;k<length;k++)
????{
?????if(divideandcount[k].count==divide)
?????{
??????divideandcount[k].time++;
??????break;
?????}
?????else
?????{
??????if(k==length-1)
??????{
??????length=length+1;
??????divideandcount[length-1].count=divide;
??????divideandcount[length-1].time=1;
??????break;
??????}
?????}
?????
????}
???
???sum=sum+divide;
??
??}?
??long result=com(sum,length);
??cout<<result<<endl;
?}
?return 0;
}
轉載于:https://www.cnblogs.com/wanglee1027/archive/2012/05/11/2496724.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的浙大1202 zoj1202的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tomcat Firewall JMX
- 下一篇: 怎样设计一个良好大数据处理的解决方案?