试题 历届试题 带分数(全排列)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                试题 历届试题 带分数(全排列)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                試題 歷屆試題 帶分數
資源限制 時間限制:1.0s 內存限制:256.0MB
問題描述
100 可以表示為帶分數的形式:100 = 3 + 69258 / 714。
還可以表示為:100 = 82 + 3546 / 197。
注意特征:帶分數中,數字1~9分別出現且只出現一次(不包含0)。
類似這樣的帶分數,100 有 11 種表示法。
輸入格式
從標準輸入讀入一個正整數N (N<1000*1000)
輸出格式
程序輸出該數字用數碼1~9不重復不遺漏地組成帶分數表示的全部種數。
注意:不要求輸出每個表示,只統計有多少表示法!
樣例輸入1
100樣例輸出1
11樣例輸入2
105樣例輸出2
6思路:
全排列一下1-9,
 之后就是將這個全排列劃分成3個數。
 枚舉3個數,加上一些剪枝即可。
代碼:
#include <iostream> #include <algorithm> using namespace std; int num[] = {1,2,3,4,5,6,7,8,9}; int main() {int n;cin>>n;int ans = 0;do{int x = 0;for(int i = 0; i < 7; i++){x = x*10 + num[i];if(x > n) break;int y = 0;for(int j = i+1; j < 8; j++){y = y * 10 + num[j];if(y < n) continue;int z = 0;for(int k = j+1; k < 9; k++){z = z*10 + num[k];}if(z > y) continue;if(y % z == 0 && y / z == n - x){ans++;}}}}while(next_permutation(num,num+9));cout<<ans<<endl;return 0; }總結
以上是生活随笔為你收集整理的试题 历届试题 带分数(全排列)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        