Exam Numbers
While studying for the exam, you get frustrated with all the boring tasks and decide to come up with a task of your own. You want to find all the 3-digit numbers that are in some interval and whose sum of digits equal some target. You decide to name them exam numbers for good fortune.
Write a program that prints those exam numbers in increasing sequence.
Input
- The input consists of exactly 3 lines
- x - interval start (inclusive)
- y - interval end (inclusive)
- t - target sum
Output
- Output all the exam numbers on a new line
Constraints
100 <= x < y <= 999
Sample Tests
Input
100
200
12
Output
129
138
147
156
165
174
183
192
Input
300
400
4
Output
301
310
400
Здравейте, доста забих на тази задача някой може ли да ми даде жокер или подсказка от къде да започна
Здравей,
Прочети внимателно условието на задачата, разгледай какво се случва в input-a и output-а на дадените примери и съм сигурен, че ще се справиш за нула време
Успех!
Помисли каква е връзката между target number 12 и последващите Outputs:
129
138
147
156
165
174
183
192
веднъж разбереш защо точно тези числа са принтирани - ще го разбереш решението
Опитай този подход ,сигурен съм ,че ще ви хареса колега :
import java.util.Scanner;
public class ExamNumbers {
// A helper method to compute the sum of digits of a number
public static int sumOfDigits(int n) {
int sum = 0;
while (n > 0) {
sum += n % 10; // add the last digit
n /= 10; // remove the last digit
}
return sum;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// Read the input
int x = sc.nextInt(); // interval start
int y = sc.nextInt(); // interval end
int t = sc.nextInt(); // target sum
// Loop through the interval and check each number
for (int i = x; i <= y; i++) {
if (sumOfDigits(i) == t) { // if the sum of digits equals the target
System.out.println(i); // print the exam number
}
}
sc.close();
}
}