【完数】|HDU-1406完数
1647 ワード
基礎的な問題ですが、熟練していないので、いつも一通り持って行くことができません.今回はここに書いて自分に教訓を与えます.
タイトル:
完数の定義:1より大きい正の整数のすべての因子の和がそれ自体に等しい場合、この数は完数であり、例えば6、28はすべて完数である:6=1+2+3;28=1+2+4+7+14.
本題のタスクは,2つの正の整数間の完数の個数を判断することである. Input
入力データは複数の行を含み、最初の行は正の整数nであり、テストインスタンスの個数を表し、次いでnのテストインスタンスであり、各インスタンスは1行を占め、2つの正の整数num 1とnum 2からなる(1 Output
テストデータのセットごとにnum 1とnum 2の間(num 1とnum 2を含む)に存在する完全な数を出力します.Sample Input
2
2 5
5 7
Sample Output
0
1
ダイレクトコード:
閲覧ありがとうございます.
タイトル:
完数の定義:1より大きい正の整数のすべての因子の和がそれ自体に等しい場合、この数は完数であり、例えば6、28はすべて完数である:6=1+2+3;28=1+2+4+7+14.
本題のタスクは,2つの正の整数間の完数の個数を判断することである. Input
入力データは複数の行を含み、最初の行は正の整数nであり、テストインスタンスの個数を表し、次いでnのテストインスタンスであり、各インスタンスは1行を占め、2つの正の整数num 1とnum 2からなる(1 Output
テストデータのセットごとにnum 1とnum 2の間(num 1とnum 2を含む)に存在する完全な数を出力します.Sample Input
2
2 5
5 7
Sample Output
0
1
ダイレクトコード:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include
#include
#include
#include
using namespace std;
bool blow_t(int n) /// n ;
{
int i,sum = 0;
bool wanshu = false; /// flag;
for(i = 1; i <= n/2; i ++) /// 1 ~ n/2 ;
{
if(n % i == 0)
{
sum += i; /// i n , sum;
}
}
if(n == sum) /// sum==n, ,flag ;
{
wanshu = true;
}
return wanshu;
}
int main()
{
int N;
cin >> N;
while(N--)
{
int i,a,b,sum = 0;
int t;
cin >> a >> b;
if(a > b)
{
swap(a,b);
}
for(i = a; i <= b; i ++)
{
if(blow_t(i))
{
sum ++;
}
}
cout << sum << endl;
}
return 0;
}
閲覧ありがとうございます.