説明
69 258 + 3 = 714分の100:100は、混合画分の形で表すことができます。
82 + 100 = 197分の3546:それはまた、のように表すことができます。
注前記分数、番号1〜9に見える一度だけ、それぞれ(0を含みません)。
このような混合割合は、11 100の表記があります。
82 + 100 = 197分の3546:それはまた、のように表すことができます。
注前記分数、番号1〜9に見える一度だけ、それぞれ(0を含みません)。
このような混合割合は、11 100の表記があります。
入力
標準入力からの正の整数N(N <×1000 1000)
出力
デジタル番組を出力してデジタル1〜9種の数が示される全てからなる漏れ分数なし省略する。
注:各々の出力に数値表現でのみ統計を言っ必要ありません!
注:各々の出力に数値表現でのみ統計を言っ必要ありません!
サンプル入力1
100
サンプル出力1
11
サンプル入力2
105
サンプル出力2
6
1の#include <stdio.hの> 2の#include < ストリング・H> 3の#include <iostreamの> 4の#include < ストリング > 5の#include <math.h>の 6の#include <アルゴリズム> 7の#include <ベクトル> 8#含む<キュー> 9の#include < セット > 10の#include <積層> 11の#include <地図> 12の#include <sstream提供さ> 13 のconst int型 INF = 0x3f3f3f3f 。 14 typedefの長い 長いLL。 CONST INT MOD = 1E9 + 7 ; 16 CONST INT MAXN = 1E7 + 10 ; 17 使用して 名前空間STD; 18れている 19。 int型の A [ 10 ]; // ストア完全順列配列 20は、 21であり、 INT (メイン) 22である { 23が INT N-; 24 scanfの(" D%」、およびN-); 25 用(INT I = 0 I <; 9 ; I ++)// 初期化 26 [I] = I + 1 、 27 INT ANS = 0 ; 28 行う{ 29 のint A = 0 ; // 整数部 30 のための(INT I = 0 ; I <= 6。 ; I ++)// 整数部最大6をします 31は { 32 A * = A 10 + A [I]; 33である INT B = 0 ; // 分子部分 34が INT C = 0 ; // 分母部 35 IF(= A> N-) 36 BREAK ; 37 用(INT J = I +は、1。 ; J <= I +(9 - (I + 1)+ 1)/ 2 ; J ++)// 分子部分以上は、残りの桁の半分 38は、 B = B * 10 + A [J]; 39 用(INT J = I +(9 - (I + 1)+ 。1)/ 2 + 1、J < 9。、J ++)// すべての分母の残りのビット 40 C = * C 10 + A [J]。 41は IFは(Bの%C == 0 && A + B / C == N-)// 理解分子が/分母が整数でなければならない 42は ANS ++ ; 43である ため(INT J = I +(9 - (I + 1)+ 。1)/ 2 + 。1 ; J < 8 ; J ++)// 分子部分が長くなり、分母が短くなる 44は、 { 45 B = B * 10 + A [J]; 46である C = CA [J] * POW(10、9 - (J + 。1 )); 47 IF(Bの%のC == 0&& + B / C == N) 48 ANS ++ 。 49 } 50 } 51 } ながら(next_permutation(A、A + 9 ))。 52 のprintf(" %dの\ n " 、ANS)。 53 リターン 0 ; 54 }