Covid Run(Solution)-Codechef October Long Challenge Solution

Anubhav Mishra
2 min readOct 7, 2020

--

Question

Covid-1919 is spreading fast! There are N cities, numbered from 0 to (N−1), arranged in a circular manner. City 0 is connected to city 1, 1 to 2, ……, city (N−2) to city (N−1), and city (N−1) to city 0.

The virus is currently at city X. Each day, it jumps from its current city, to the city K to its right, i.e., from city X to the city (X+K)%N. As the virus jumps, the cities in between don’t get infected. Cities once infected stay infected. You live in city Y. Find if it will reach your city eventually. If it will, print YES, else print NO.

Input:

  • The first line of the input consists of an integer T, the number of test cases.
  • The first and only line of each test case contains four space-separated integers — N, K, X and Y, denoting the number of cities, the size of jumps, Covid’s current city, and the city that you live in, respectively.

Output:

For each test case, in a new line, print YES if Covid shall reach your city after a finite number of days, else print NO.

Constraints

  • 1≤T≤1001≤T≤100
  • 1≤N≤10001≤N≤1000
  • 0≤X,Y≤N−10≤X,Y≤N−1
  • 0≤K≤10000≤K≤1000

Subtasks

  • Subtask 1–100% — Original constraints

Sample Input:

2
6 2 5 3
12 3 4 2

Sample Output:

YES
NO

Explanation:

  • In the first sample, Covid starts at city 55, then goes to city 11, and then from city 11 to city 33. Thus, it reaches the city that you live in.
  • In the second sample, Covid starts at city 44, goes to city 77, then 1010, 11, then 44, 77, 1010, ……, and so on. It never reaches city 22.

Solution

import java.util.*;
import java.lang.*;
import java.io.*;
class Codechef
{
public static void main (String[] args) throws java.lang.Exception
{
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();

while(t-- > 0){
int n = sc.nextInt();
int k = sc.nextInt();
int x = sc.nextInt();
int y = sc.nextInt();
int j=0;

if(y>n){
System.out.println("NO");
}
else{
for(int i=1;i<=n;i++){
if((x+k*i)%n == y){
System.out.println("YES");
j--;
break;
}
}
}
if(j==0)
System.out.println("NO");
}

}
}

This solution is Just for the understanding of logic after the contest is over. In no way I urge you to cheat in the contest. Remember these challenges are only for learning.

Question Link:

https://www.codechef.com/OCT20B/problems/CVDRUN

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Anubhav Mishra
Anubhav Mishra

Written by Anubhav Mishra

Software Engineer , Having my degree B.Tech in Information Technology from BVCOE, New Delhi. Love new Technologies. Electronic Dance Music is love.

Responses (1)

Write a response