Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.time.LocalDate;
- import java.time.temporal.ChronoUnit;
- import java.util.Scanner;
- public class _4_MagicDates {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner scan = new Scanner(System.in);
- int startYear = scan.nextInt();
- int endYear = scan.nextInt();
- int magicWeight = scan.nextInt();
- LocalDate startDay = LocalDate.of(startYear, 1, 1);
- LocalDate endDay = LocalDate.of(endYear, 12, 31);
- int totalDaysBetween = (int) ChronoUnit.DAYS.between(startDay, endDay);
- boolean foundMagicDate = findAndPrintMagicDates(startDay,
- totalDaysBetween, magicWeight);
- if (!foundMagicDate) {
- System.out.println("No");
- }
- }
- private static boolean findAndPrintMagicDates(LocalDate start,
- int daysBetween, int magicWeight) {
- // TODO Auto-generated method stub
- boolean foundDate = false;
- int day, month, year;
- int[] digits;
- for (int i = 0; i <= daysBetween; i++) {
- LocalDate date = start.plusDays(i);
- day = date.getDayOfMonth();
- month = date.getMonthValue();
- year = date.getYear();
- digits = new int[8];
- digits[0] = day / 10;
- digits[1] = day % 10;
- digits[2] = month / 10;
- digits[3] = month % 10;
- digits[4] = year / 1000;
- digits[5] = (year % 1000) / 100;
- digits[6] = (year % 100) / 10;
- digits[7] = year % 10;
- int dateWeight = calculateTheWeightOfCurrentDate(digits);
- if (dateWeight == magicWeight) {
- foundDate = true;
- System.out.printf("%02d-%02d-%d\n", day, month, year);
- }
- }
- return foundDate;
- }
- private static int calculateTheWeightOfCurrentDate(int[] digits) {
- // TODO Auto-generated method stub
- int weight = 0;
- for (int i = 0; i < digits.length; i++) {
- for (int j = i + 1; j < digits.length; j++) {
- weight += digits[i] * digits[j];
- }
- }
- return weight;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement