zoey
点击国内主页可以让浏览速度加快哦 ~ !

关于HDOJ 1323题(Perfection) 的理解(C/C++)

2019-08-18 hdoj cout输出格式 简单题 Mid-Atlantic USA 1996
Word count: 759 | Reading time: 4min


    水题。注意下格式要求即可,关于格式要求,和hdoj1014有点像。







题目描述:Perfection

Perfection
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/32768 K (Java/Others)

Problem Description
    From the article Number Theory in the 1994 Microsoft Encarta: “If a, b, c are integers such that a = bc, a is called a multiple of b or of c, and b or c is called a divisor or factor of a. If c is not 1/-1, b is called a proper divisor of a. Even integers, which include 0, are multiples of 2, for example, -4, 0, 2, 10; an odd integer is an integer that is not even, for example, -5, 1, 3, 9. A perfect number is a positive integer that is equal to the sum of all its positive, proper divisors; for example, 6, which equals 1 + 2 + 3, and 28, which equals 1 + 2 + 4 + 7 + 14, are perfect numbers. A positive number that is not perfect is imperfect and is deficient or abundant according to whether the sum of its positive, proper divisors is smaller or larger than the number itself. Thus, 9, with proper divisors 1, 3, is deficient; 12, with proper divisors 1, 2, 3, 4, 6, is abundant.”
Given a number, determine if it is perfect, abundant, or deficient.

Input
    A list of N positive integers (none greater than 60,000), with 1 < N < 100. A 0 will mark the end of the list.

Output
    The first line of output should read PERFECTION OUTPUT. The next N lines of output should list for each input integer whether it is perfect, deficient, or abundant, as shown in the example below. Format counts: the echoed integers should be right justified within the first 5 spaces of the output line, followed by two blank spaces, followed by the description of the integer. The final line of output should read END OF OUTPUT.

Sample Input
15 28 6 56 60000 22 496 0

Sample Output
PERFECTION OUTPUT
15 DEFICIENT
28 PERFECT
6 PERFECT
56 ABUNDANT
60000 ABUNDANT
22 DEFICIENT
496 PERFECT
END OF OUTPUT

Source

    Mid-Atlantic USA 1996



原题链接

More info:Question




cout输出格式控制(复习)

同cout输出格式控制题可见hdoj 1014

cout输出位数控制———整体输出位数的控制

头文件:iomanip
函数方法:setw(n);
作用:下一个输出量时,设定输出的长宽为n个字符。输出量不达n个字符时,会在输出量左边填补对应的空白;若宽于n个字符,则按实际需要全部输出

1
2
3
4
5
6
7
8
9
10
11
 #include<iostream>
#include<iomanip>
using namespace std;
int n;
int main() {
while (cin >> n) {
if (n == -1) break;
cout << setw(5)<<n << endl;
}
return 0;
}

运行结果示意:
运行结果示意

cout靠左或者靠右输出的设置

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
//默认是右对齐.
cout <<left ; // 左对齐
cout <<setw(5) <<12 <<setw(5) <<34 <<endl ; // 12___34___

cout <<right ; // 默认 右对齐
cout <<setw(5) <<12 <<setw(5) <<34 <<endl ; // ___12___34

## Accepted代码

``` c++
#include<iostream>
#include<iomanip>
using namespace std;
int factor_sum(int x) {
int sum = 0;
for (int i = 1; i < x; i++) {
if (0 == x % i) sum += i;
}
return sum;
}
int flag,x;
int main() {
flag = 1;
while (cin >> x) {
if (0 == x) {
cout << "END OF OUTPUT" << endl;
break;
}

if (flag) {
cout << "PERFECTION OUTPUT" << endl;
flag = 0;
}
cout << setw(5) << x << " ";
if (factor_sum(x) == x)cout << "PERFECT";
if (factor_sum(x) < x) cout << "DEFICIENT";
if (factor_sum(x) > x) cout << "ABUNDANT";
cout << endl;
}
return 0;
}

参考博客

Author: Zoey

Link: https://zoey1038569979.github.io/2019/08/18/hdoj1323/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
使用git提交本地文件夹到github仓库
NextPost >
关于HDOJ 1303题(Doubles 双倍) 的理解(C/C++)
CATALOG
  1. 1. 题目描述:Perfection
  2. 2. 原题链接
  3. 3. cout输出格式控制(复习)
    1. 3.1. cout输出位数控制———整体输出位数的控制
    2. 3.2. cout靠左或者靠右输出的设置
  4. 4. 参考博客