程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++編程練習一-我拿了誰的書?

C++編程練習一-我拿了誰的書?

編輯:C++入門知識

Description
期末考了,龍少和滄海把希望都寄托在課本上,誰知萬惡的監考老師要每個學生把書放到講台上,就這樣,這場考試,龍少過的很不爽,考完後,隨便拿了本書就走了,回到宿捨後發現不是自己的書,詛喪的他突然陷入沉思,參加考試的30人如果都像他一樣拿錯書的情況有多少種?(假設每個學生都帶書且只帶一本)
Input
輸入數據的第一行為一個整數T,代表測試數據的個數,接下來T行,每行個包括一個整數N,代表一個教室中學生的個數
Output
對於每組測試數據,輸出一個整數,代表拿錯書的情況總數
Sample Input
3
1
2
3
Sample Output
0
1
2
Hint
http://baike.baidu.com/view/668994.htm
參考代碼

view plaincopy to clipboardprint?
#include <iostream>  
using namespace std; 
const int N = 31; 
const int M = 50; 
int main(){ 
    int cases,n,i,j,map[N][M]; 
    for(i = 0;i < M;++ i){ 
        map[1][i] = 0; 
    } 
    for(i = 2;i < N;i ++){ 
        for(j = 0;j < M;++ j){ 
            map[i][j] = map[i - 1][j] * i; 
        } 
        if(i % 2 == 0){ 
            map[i][0] += 1; 
        }else{ 
            map[i][0] -= 1; 
        } 
        for(j = 0;j < M;++ j){ 
            if(map[i][j] > 9){ 
                map[i][j + 1] += map[i][j] / 10; 
                map[i][j] %= 10; 
            }else if(map[i][j] < 0){ 
                map[i][j] += 10; 
                map[i][j + 1] -=  1; 
            } 
        } 
    } 
    cin>>cases; 
    while(cases --){ 
        cin>>n; 
        if(n == 1){ 
            cout<<0<<endl; 
            continue; 
        } 
        bool b = false; 
        for(i = M - 1;i >= 0;-- i){ 
            if(map[n][i] > 0 || b){ 
                cout<<map[n][i]; 
                b = true; 
            } 
        } 
        cout<<endl; 
    } 
    return 
#include <iostream>
using namespace std;
const int N = 31;
const int M = 50;
int main(){
    int cases,n,i,j,map[N][M];
 for(i = 0;i < M;++ i){
  map[1][i] = 0;
 }
    for(i = 2;i < N;i ++){
  for(j = 0;j < M;++ j){
   map[i][j] = map[i - 1][j] * i;
  }
        if(i % 2 == 0){
            map[i][0] += 1;
        }else{
            map[i][0] -= 1;
        }
  for(j = 0;j < M;++ j){
   if(map[i][j] > 9){
    map[i][j + 1] += map[i][j] / 10;
    map[i][j] %= 10;
   }else if(map[i][j] < 0){
    map[i][j] += 10;
    map[i][j + 1] -=  1;
   }
  }
    }
    cin>>cases;
    while(cases --){
        cin>>n;
  if(n == 1){
   cout<<0<<endl;
   continue;
  }
  bool b = false;
  for(i = M - 1;i >= 0;-- i){
   if(map[n][i] > 0 || b){
    cout<<map[n][i];
    b = true;
   }
  }
        cout<<endl;
    }
    return

作者“冰非寒: 多看看,多寫寫,多睡懶覺。”
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved