結果
| 問題 | 
                            No.346 チワワ数え上げ問題
                             | 
                    
| コンテスト | |
| ユーザー | 
                             ku_material_ro
                         | 
                    
| 提出日時 | 2016-10-08 00:47:57 | 
| 言語 | C++11(廃止可能性あり)  (gcc 13.3.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,043 bytes | 
| コンパイル時間 | 461 ms | 
| コンパイル使用メモリ | 60,636 KB | 
| 実行使用メモリ | 5,248 KB | 
| 最終ジャッジ日時 | 2024-11-21 20:18:27 | 
| 合計ジャッジ時間 | 1,248 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 9 WA * 14 | 
ソースコード
	#include<iostream>
	#include<math.h>
	#include<string>
	using namespace std;
	int kumiawase(int a, int b){
		int c;
		int at = 1;
		int bt = 1;
		int cnt = 0;
		for (int i1 = b; i1 > 0; i1--){
			bt *= i1;
			cnt++;
		}
		while (cnt){
			at *= a;
			a--;
			cnt--;
		}
		c = at / bt;
		return c;
	}
	int main(){
		string s;
		string a = "";
		int inc = -1;
		int inwf,inwe;
		int cnt = 0;
		int cntc = 0;
		int ans = 0;
		cin >> s;
		for (int i = 0; i < s.length(); i++){
			if (s[i] == 'c' ){
				a += s[i];
				cntc++;
			}
			if (s[i] == 'w'){
				a += s[i];
			}
		}
		a.erase((int)a.rfind("w") + 1, s.length());
		cntc -= a.length() - ((int)a.rfind("w"));
		//cout << a << endl;
		//cout << cntc << endl;
		while (1){
			inc = (int)a.find("c", inc + 1);
			if (inc == -1) break;
			inwf = (int)a.find("w", inc + 1);
			inwe = (int)a.rfind("w");
			//cout << inwe - inwf + 1 - cntc + (inwf - inc - 1) << endl;
			ans += kumiawase(inwe - inwf + 1 - cntc + (inwf - inc - 1), 2);
			cntc--;
		}
		
		cout << ans << endl;
		return 0;
	}
            
            
            
        
            
ku_material_ro