ホームページ > 記事 > ウェブフロントエンド > Codeforces ラウンド #282 (ディビジョン 2)-B。モジュラー方程式_html/css_WEB-ITnose
モジュラー方程式
テストごとの制限時間
1 秒
テストごとのメモリ制限
256 メガバイト
入力
標準入力
出力
標準出力
先週、Hamed彼は数学の授業でモジュラー方程式と呼ばれる新しいタイプの方程式について学びました。 i を j で割った余りとして i モジュロ j を定義し、それを で表しましょう。ハメドの先生が説明したように、モジュラー方程式は、a と b が 2 つの非負の整数、x が変数である形式の方程式です。方程式の解を正の整数 x と呼びます。
ハメドは映画を見ていたため、授業にあまり注意を払いませんでした。彼はこれらの方程式の定義を理解することができただけです。
今、彼は数学の練習問題を書きたいと考えていますが、その方法がわからないので、あなたに助けを求めました。彼はモジュラー方程式について知っていることをすべて話し、2 つの数値 a と b を与えてモジュラー方程式の答えの数を決定するプログラムを書くように頼みました。
入力
入力の唯一の行に 2 つのスペースを入れてください。区切られた整数 a と b (0?≤?a,?b?≤?109) が与えられます。
出力
方程式の答えが無限にある場合は、「infinity」と出力します (引用符は付けません)。 。それ以外の場合は、モジュラー方程式の解の数を出力します。
サンプル テスト
入力
21 5
出力
input
9435152 272
出力
282
入力
10 10
出力
infinity
注意
最初のサンプルでは、モジュラー方程式の答えは 8 と 16 です。
题意:给出a,b,
分析: 暴力可能。 a % x == b 有(a - b) % x == 0、つまりはa -前提として、x は整数ですが、x > が十分である必要があることに注意してください。 b(余数比除数小),当a
AC代コード:
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;#define INF 0x7fffffffint main(){ #ifdef sxk freopen("in.txt","r",stdin); #endif int a, b, ans; while(scanf("%d%d",&a, &b)!=EOF) { ans = 0; if(a < b) puts("0"); else if(a == b) puts("infinity"); else{ int x; for(x=1; x*x<a-b; x++){ if((a-b) % x == 0){ if(x > b) ans ++; if((a-b)/x > b) ans ++; } } if((a-b) == x*x && x > b) ans ++; printf("%d\n", ans); } } return 0;}
Python版:
a, b = map(int, raw_input().split())if a == b: print 'infinity'elif a < b: print 0else: a -= b i = 1 ans = 0 while i*i <= a: if a % i == 0: if i > b: ans += 1 if a/i > b and i*i != a: ans += 1 i += 1 print ans