Advertisement
dimipan80

C#Exams 4. Magic Dates (on Java Code)

Aug 22nd, 2014
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.84 KB | None | 0 0
  1. import java.time.LocalDate;
  2. import java.time.temporal.ChronoUnit;
  3. import java.util.Scanner;
  4.  
  5. public class _4_MagicDates {
  6.  
  7.     public static void main(String[] args) {
  8.         // TODO Auto-generated method stub
  9.         Scanner scan = new Scanner(System.in);
  10.         int startYear = scan.nextInt();
  11.         int endYear = scan.nextInt();
  12.         int magicWeight = scan.nextInt();
  13.  
  14.         LocalDate startDay = LocalDate.of(startYear, 1, 1);
  15.         LocalDate endDay = LocalDate.of(endYear, 12, 31);
  16.         int totalDaysBetween = (int) ChronoUnit.DAYS.between(startDay, endDay);
  17.  
  18.         boolean foundMagicDate = findAndPrintMagicDates(startDay,
  19.                 totalDaysBetween, magicWeight);
  20.  
  21.         if (!foundMagicDate) {
  22.             System.out.println("No");
  23.         }
  24.     }
  25.  
  26.     private static boolean findAndPrintMagicDates(LocalDate start,
  27.             int daysBetween, int magicWeight) {
  28.         // TODO Auto-generated method stub
  29.         boolean foundDate = false;
  30.         int day, month, year;
  31.         int[] digits;
  32.         for (int i = 0; i <= daysBetween; i++) {
  33.             LocalDate date = start.plusDays(i);
  34.             day = date.getDayOfMonth();
  35.             month = date.getMonthValue();
  36.             year = date.getYear();
  37.             digits = new int[8];
  38.             digits[0] = day / 10;
  39.             digits[1] = day % 10;
  40.             digits[2] = month / 10;
  41.             digits[3] = month % 10;
  42.             digits[4] = year / 1000;
  43.             digits[5] = (year % 1000) / 100;
  44.             digits[6] = (year % 100) / 10;
  45.             digits[7] = year % 10;
  46.             int dateWeight = calculateTheWeightOfCurrentDate(digits);
  47.             if (dateWeight == magicWeight) {
  48.                 foundDate = true;
  49.                 System.out.printf("%02d-%02d-%d\n", day, month, year);
  50.             }
  51.         }
  52.  
  53.         return foundDate;
  54.     }
  55.  
  56.     private static int calculateTheWeightOfCurrentDate(int[] digits) {
  57.         // TODO Auto-generated method stub
  58.         int weight = 0;
  59.         for (int i = 0; i < digits.length; i++) {
  60.             for (int j = i + 1; j < digits.length; j++) {
  61.                 weight += digits[i] * digits[j];
  62.             }
  63.         }
  64.  
  65.         return weight;
  66.     }
  67.  
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement