結果
| 問題 | No.170 スワップ文字列(Easy) | 
| コンテスト | |
| ユーザー |  Bantako | 
| 提出日時 | 2017-07-08 19:56:30 | 
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 1 ms / 5,000 ms | 
| コード長 | 559 bytes | 
| コンパイル時間 | 277 ms | 
| コンパイル使用メモリ | 23,424 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-10-06 19:52:42 | 
| 合計ジャッジ時間 | 1,193 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 21 | 
コンパイルメッセージ
main.cpp:5:1: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]
    5 | main(){
      | ^~~~
main.cpp: In function ‘int main()’:
main.cpp:7:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
    7 |     scanf("%s",S);
      |     ~~~~~^~~~~~~~
            
            ソースコード
#include<stdio.h>
#include<string.h>
int num[8];
int fact(int n);
main(){
    char S[9];
    scanf("%s",S);
    for(int i = 0;i < strlen(S);i++){
        if(S[i] == '.'){continue;}
        num[i]++;
        for(int j = i+1;j < strlen(S);j++){
            if(S[i]==S[j]){
                num[i]++;
                S[j] = '.';
            }
        }
    }
    int sum = 1;
    for(int i = 0;i < strlen(S);i++){
        sum *= fact(num[i]);
    }
    printf("%d\n",fact(strlen(S))/sum-1);
}
int fact(int n){
    if(n <= 1){return 1;}
    return n * fact(n-1);
}
            
            
            
        