Lucky Number
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3583 Accepted Submission(s): 1783
Problem Description
To Chinese people, 8 is a lucky number. Now your task is to judge if a number is lucky.
We say a number is lucky if it’s a multiple of 8, or the sum of digits that make up the number is a multiple of 8, or the sum of every digit’s square is a multiple of 8.
We say a number is lucky if it’s a multiple of 8, or the sum of digits that make up the number is a multiple of 8, or the sum of every digit’s square is a multiple of 8.
Input
The first line contains an integer stands for the number of test cases.
Each test case contains an integer n (n >= 0).
Each test case contains an integer n (n >= 0).
Output
For each case, output “Lucky number!” if the number is lucky, otherwise output “What a pity!”.
Sample Input
2 0 8
Sample Output
Lucky number! Lucky number!
Author
dandelion
Source
问题链接:HDU3346 Lucky Number
问题简述:(略)
问题分析:如果一个数、数字之和以及数字平方和之一是8的倍数称为幸运数。
计算一下数字之和以及数字平方和,取余数判定一下就可以了。
程序说明:
本题按字符串读入数据再行计算,是一种比较特殊的做法。读入整数再计算也是一样的。
实际上本题的做法时间上要好一些,因为输入数据本身原本就是字符串,不必要转换成整数后再进行计算。
题记:(略)
参考链接:(略)
/* HDU3346 Lucky Number */
#include <iostream>
#include <string>
using namespace std;
const int BASE = 10;
int main()
{
int t, n, sum1, sum2, digit;
string s;
cin >> t;
while(t--) {
cin >> s;
n = sum1 = sum2 = 0;
for(int i=0; s[i]; i++) {
digit = s[i] - '0';
n *= BASE;
n += digit;
sum1 += digit;
sum2 += digit * digit;
}
if(n % 8 == 0 || sum1 % 8 == 0 || sum2 %8 == 0)
cout << "Lucky number!" << endl;
else
cout << "What a pity!" << endl;
}
return 0;
}