1. 程式人生 > >hdu 1261(排列組合)

hdu 1261(排列組合)

思路:公式很好推,就是(n1+n2+n3+...nn)!/(n1!+n2!+...+nn!);

然後毫無疑問要用到大數計算...發現用string,vector還是挺方便的。。。

View Code
 1 #include<iostream>
 2 #include<vector>
 3 #include<string>
 4 #include<algorithm>
 5 using namespace std;
 6 int num[27];
 7 vector<string>facs;
 8 
 9 string Divide(const
string &str,int n){ 10 int len=str.size()-1; 11 string s=""; 12 int c=0,p=0; 13 for(int i=0;i<=len;i++){ 14 c=p*10+str[i]-'0'; 15 p=c%n; 16 c/=n; 17 if(c==0&&s.size()==0)continue; 18 else s+=(c+'0'); 19 } 20 return s; 21 } 22 23 string
Multiple(const string &str,int n){ 24 int len=str.size()-1; 25 int c=0,p=0; 26 string s=""; 27 for(int i=len;i>=0;i--){ 28 c=(str[i]-'0')*n+p; 29 p=c/10; 30 c%=10; 31 s+=(c+'0'); 32 } 33 while(p){ 34 c=p%10; 35 p/=10; 36 s+=(c+'
0'); 37 } 38 reverse(s.begin(),s.end());//字串倒置 39 return s; 40 } 41 42 void Calucate_Facs(){ 43 facs.push_back("1");//0的階乘 44 facs.push_back("1");//1的階乘 45 facs.push_back("2");//2的階乘 46 string tmp="2"; 47 for(int i=3;i<=26*12;i++){ 48 tmp=Multiple(tmp,i); 49 facs.push_back(tmp); 50 } 51 } 52 53 int main(){ 54 Calucate_Facs();//一開始打表計算階乘 55 int n; 56 while(~scanf("%d",&n)&&n){ 57 string s="",str=""; 58 int sum=0; 59 for(int i=0;i<n;i++){ 60 scanf("%d",&num[i]); 61 sum+=num[i]; 62 } 63 str=facs[sum]; 64 for(int i=0;i<n;i++){ 65 for(int j=2;j<=num[i];j++){ 66 str=Divide(str,j); 67 } 68 } 69 cout<<str<<endl; 70 } 71 return 0; 72 }

相關推薦

hdu 1261(排列組合

思路:公式很好推,就是(n1+n2+n3+...nn)!/(n1!+n2!+...+nn!); 然後毫無疑問要用到大數計算...發現用string,vector還是挺方便的。。。 View Code

HDU 2200 Eddy's AC難題(排列組合

Eddy's AC難題 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submissi

HDU 5698:瞬間移動(排列組合

AC程式碼: #include <iostream> #include <stdio.h> #include <algorithm> using namespace std; typedef long long LL;

HDU 1521 排列組合 (指數型母函式

排列組合 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 8   Accepted Submission(s)

HDU 1521 排列組合

pro long sizeof strong += sin string space pre Problem Description 有n種物品,並且知道每種物品的數量。要求從中選出m件物品的排列數。例如有兩種物品A,B,並且數量都是1,從中選2件物品,則排列有"A

2018.10.26 poj3421X-factor Chains(數論+排列組合

傳送門 排列組合入門題。 令 X = p

Combinatorics——HDUOJ 1799 - 迴圈多少次?(楊輝三角 - 排列組合

原題: Problem Description 我們知道,在程式設計中,我們時常需要考慮到時間複雜度,特別是對於迴圈的部分。例如, 如果程式碼中出現 for( i=1; i<=n; i++) OP ; 那麼做了n次OP運算,如果程式

hdu 1521 排列組合【指數型生成函式】

根據套路列出式子:\( \prod_{i=1}^{n}\sum_{j=0}^{c[i]}\frac{x^j}{j!} \),然後暴力展開即可 #include<iostream> #include<cstdio> #include<cstring> using names

hdu 1521 排列組合 —— 指數型生成函數

turn col color 函數 font 強制轉換 print size using 題目:http://acm.hdu.edu.cn/showproblem.php?pid=1521 標準的指數型生成函數; WA了好幾遍,原來是多組數據啊囧; 註意精度,直接強制轉換(

【ZCMU1796】wjw的數學題(唯一分解定理+排列組合

題目連結 1796: wjw的數學題 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 70  Solved: 25 [Submit][Status][Web Board] Description

hdu 1521 排列組合【指數型母函式】

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=1521   指數型母函式定義及其作用: #include<stdio.h> #include<string.h> #include<string&

zcmu 1796 wjw的數學題 (唯一分解定理+排列組合

【題目】 Problem B: wjw的數學題 Time Limit: 2 Sec  Memory Limit: 128 MB Submit: 69  Solved: 24 [Submit][Status][Web Board] Description Wjw rec

2018.10.25 uoj#308. 【UNR #2】UOJ拯救計劃(排列組合

傳送門 有一個顯然的式子:Ans=∑A(n,i)∗用i種顏色的方案數Ans=\sum A(n,i)*用i種顏色的方案數Ans=∑A(n,i)∗用i種顏色的方案數 這個東西貌似是個NPCNPCNPC。 於

排列組合wannafly28-d

#include<bits/stdc++.h> using namespace std; const int maxn = 2e6+100; typedef long long ll; typedef pair<int, int> pi

Round Numbers (排列組合

The cows, as you know, have no fingers or thumbs and thus are unable to play Scissors, Paper, Stone' (also known as 'Rock, Paper, Scissors', 'Ro, Sham, Bo

Codeforces Round #324 (Div. 2) (B排列組合(C貪心(D哥德巴赫猜想 數論+暴力

題意:。。。。 思路:剛開始還想用什麼字串模擬或者大數什麼的,後來想了想差點笑出聲來,樣例就是用來忽悠人的。。。 #include <bits/stdc++.h> #define ll

POJ - 1850 Code(排列組合

Transmitting and memorizing information is a task that requires different coding systems for the best use of the available space. A well known sys

4123 && ALGO-165 Glenbow Museum(排列組合

題目連結:http://lx.lanqiao.cn/problem.page?gpid=T461點選開啟連結 演算法訓練 Glenbow Museum   時間限制:1.0s   記憶體限制:256.0MB 問題描述   卡城著名的格林堡博物館是加拿大西部

bzoj3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛(排列組合

geo mes can line llc names 裏的 簡單的 tro 原題鏈接 題目描述:約翰要帶N(1≤N≤100000)只牛去參加集會裏的展示活動,這些牛可以是牡牛,也可以是牝牛.牛們要站成一排.但是牡牛是好鬥的,為了避免牡牛鬧出亂子,約翰決定任意兩只牡牛之間至少

UOJ 2017NOI Round #2 T1:UOJ拯救計劃(排列組合

Description 小O和小I一直喜歡打 UOJ 的比賽,然而等了半個丁酉年卻也沒能等到下一次比賽。眼看著 NOI 即將到來,他們決定一探究竟,找出 UOJ 沉寂的真正原因! 終於有一天,他們得知 UOJ 的管理層全都被兩個一心想摧毀 OI 界的大魔王