Coding
  • Welcome
  • Baisc Knowledge
    • Vim
    • C
      • Library
    • Java
      • Setup
      • Java Basic
  • Kattis
    • Easy
      • A Second Opinion
      • A Shortcut to What?
      • A Stack of Gold
      • ACM Contest Scoring
      • ASCII kassi
      • Aaah!
      • Add Two Numbers
      • Adding Trouble
      • Afjörmun
      • Airfare Grants
      • Above Average
      • Akcija
      • Alphabet Spam
      • Amerískur vinnustaður
      • Anti-Palindrome
      • Apaxiaaaaaaaaaaaans!
      • Arithmetic Functions
      • Arm Coordination
      • Arrangement
      • Attendance
      • Autori
      • Average Character
      • Avion
      • Baby Bites
      • Babylonian Numbers
      • ABC
      • Aldur
      • Backspace
      • Bannorð
      • Barcelona
      • Basketball One-on-One
      • Batter Up
      • Beavergnaw
      • Bela
      • BergMál
      • Bergur*
      • Akureyri*
      • Best Compromise
      • Best Relay Team*
      • Besta gjöfin
      • Betting
      • Bijele
      • Bilað Lyklaborð
      • Bitte ein Bit
      • Blandað Best
      • Blaðra
      • Blaðra2
      • Bluetooth*
      • Booking a Room
      • Bottle Opening
      • Bounding Robots
      • Breaking Branches*
      • Bracket Matching*
      • Broken Swords
      • Building Pyramids
      • Bus
      • Bus Assignment
      • CPR Number
      • Call for Problems
      • Canadians, eh?
      • Candy Store
      • Cetiri
      • Cetvrta
      • Champernowne Verification
      • Chanukah Challenge
      • Chardonnay
      • Chocolate Division*
      • Chugging
      • Cinema Crowds 2
      • Class Field Trip
      • ASCII Kassi 2
      • Coffee Cup Combo
      • Cold-puter Science
      • Composed Rhythms
      • Cookies
      • Cooking Water
      • Cornhusker
      • Cosmic Path Optimization
      • Count the Vowels
Powered by GitBook
On this page
  • Question
  • Solution
  • Idea
  • Code
Edit on GitHub
  1. Kattis
  2. Easy

Composed Rhythms

PreviousCold-puter ScienceNextCookies

Last updated 4 months ago

Question

Solution

Idea

This is a math problem. Since the question is asking for one of the solutions, it is not that hard. My method is to find as many 3s as possible, and after minusing all these 3s, we are left with the following three cases:

  1. the remainder is 2, that means we can use one 2 to satisfy the requirement

  2. the remainder is 1, that means we need to spare one 3 out and use two 2s to satisfy the requirement

  3. the remainder is 0, that means our division with all 3s are successful!

Code

https://open.kattis.com/problems/composedrhythmsopen.kattis.com
https://github.com/mendax1234/Coding-Problems/blob/main/kattis/composedrhythms/composedrhythms.c
#include <stdio.h>

int main()
{
  int n;
  scanf("%d", &n);

  int two = 0;
  int three = 0;
  if (n == 2)
  {
    two = 1;
    three = 0;
  }
  else if (n == 3)
  {
    two = 0;
    three = 1;
  }
  else if (n == 4)
  {
    two = 2;
    three = 0;
  }
  else
  {
    three = n / 3;
    if (n - three * 3 == 1)
    {
      three -= 1;
      two = 2;
    }
    else 
    {
      two = (n - three * 3) / 2;
    }
  }
  printf("%d\n", two + three);
  for (int i = 0; i < three; i += 1)
  {
    printf("3 ");
  }
  for (int i = 0; i < two; i += 1)
  {
    printf("2 ");
  }
  putchar('\n');
}