CHEFSTEP - Editorial

Contest

Setter: Aryan Agarwala
Tester: Yash Chandnani
Editorialist: Rajarshi Basu

Cakewalk

None

PROBLEM:

In order to establish dominance amongst his friends, Chef has decided that he will only walk in large steps of length exactly K feet. However, this has presented many problems in Chef’s life because there are certain distances that he cannot traverse. Eg. If his step length is 5 feet, he cannot travel a distance of 12 feet. Chef has a strict travel plan that he follows on most days, but now he is worried that some of those distances may become impossible to travel. Given N distances, tell Chef which ones he cannot travel.

EXPLANATION:

We just simulate whatever is asked in the problem. We run a loop and take each number as input. If that number is divisible by K then we output a 1 else we output a 0. When we are done, we output a newline character.

SOLUTIONS:

tester’s Code
``````#include <bits/stdc++.h>
using namespace std;

void __print(int x) {cerr << x;}
void __print(long x) {cerr << x;}
void __print(long long x) {cerr << x;}
void __print(unsigned x) {cerr << x;}
void __print(unsigned long x) {cerr << x;}
void __print(unsigned long long x) {cerr << x;}
void __print(float x) {cerr << x;}
void __print(double x) {cerr << x;}
void __print(long double x) {cerr << x;}
void __print(char x) {cerr << '\'' << x << '\'';}
void __print(const char *x) {cerr << '\"' << x << '\"';}
void __print(const string &x) {cerr << '\"' << x << '\"';}
void __print(bool x) {cerr << (x ? "true" : "false");}

template<typename T, typename V>
void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "}";}
void _print() {cerr << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
#ifndef ONLINE_JUDGE
#define debug(x...) cerr << "[" << #x << "] = ["; _print(x)
#else
#define debug(x...)
#endif

#define rep(i, n)    for(int i = 0; i < (n); ++i)
#define repA(i, a, n)  for(int i = a; i <= (n); ++i)
#define repD(i, a, n)  for(int i = a; i >= (n); --i)
#define trav(a, x) for(auto& a : x)
#define all(x) x.begin(), x.end()
#define sz(x) (int)(x).size()
#define fill(a)  memset(a, 0, sizeof (a))
#define fst first
#define snd second
#define mp make_pair
#define pb push_back
typedef long double ld;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;

void pre(){

}
long long readInt(long long l,long long r,char endd){
long long x=0;
int cnt=0;
int fi=-1;
bool is_neg=false;
while(true){
char g=getchar();
if(g=='-'){
assert(fi==-1);
is_neg=true;
continue;
}
if('0'<=g && g<='9'){
x*=10;
x+=g-'0';
if(cnt==0){
fi=g-'0';
}
cnt++;
assert(fi!=0 || cnt==1);
assert(fi!=0 || is_neg==false);

assert(!(cnt>19 || ( cnt==19 && fi>1) ));
} else if(g==endd){
if(is_neg){
x= -x;
}
assert(l<=x && x<=r);
return x;
} else {
assert(false);
}
}
}
string ret="";
int cnt=0;
while(true){
char g=getchar();
assert(g!=-1);
if(g==endd){
break;
}
cnt++;
ret+=g;
}
assert(l<=cnt && cnt<=r);
return ret;
}
long long readIntSp(long long l,long long r){
}
long long readIntLn(long long l,long long r){
}
}
}
void solve(){
rep(i,n-1){
cout<<(d%k==0);
}
{
cout<<(d%k==0)<<'\n';
}

}

int main() {
cin.sync_with_stdio(0); cin.tie(0);
cin.exceptions(cin.failbit);
pre();
rep(i,n) solve();
assert(getchar()==EOF);
return 0;
}
``````

I did exact same using java but getting TLE. I even tried fast io but was still getting TLE.Can you please tell why .

my code-

import java.util.Scanner;

class Chef_and_Steps {

``````public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
while(t-- > 0)
{
int n = sc.nextInt();
int k = sc.nextInt();

while(n-- > 0)
{
int x = sc.nextInt();

if(x % k == 0)
System.out.print("1");
else
System.out.print("0");
}
}
sc.close();
}
``````

}

instead of printing ans for each value of n keep adding ‘1’ and ‘0’ to ans string for each test case and then print and for test case ,dont forget end line

1 Like

I just dont know, why this code didnt pass?

#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl “\n”
#define REP(i,n) for(int i=0;i<n;i++)
#define REPJ(j,n) for(int j=0;j<n;j++)
#define PER(i,n) for(int i=n;i>0;i–)
#define REP1(i,n) for(int i=1;i<=n;i++)
#define REPJ1(j,n) for(int j=1;j<=n;j++)
#define ull unsigned long long int
#define ld long double
#define prec(n) fixed<<setprecision(n)
#define test ll t; cin>>t; while(t–)
#define re return 0
int main()
{
IOS;
test{
ll n,k;
cin>>n>>k;
ll a[n],b[n];
REP(i,n){
cin>>a[i];
if(a[i]>=k){
if(a[i]%k==0){
b[i]=1;
}else{
b[i]=0;
}
}else if(a[i]<k){
b[i]=0;
}
}
REP(i,n){
cout<<b[i];
}
}
re;
}

i did the same using java and got tle
also i optimized io and added each no. to a string and then printed

adarsh i did the same but still i got tle
i also used fastreader for faster io
import java.util.*;
import java.io.IOException;
import java.util.Scanner;
import java.util.StringTokenizer;
class Distance {

``````    public static class FastReader
{
StringTokenizer st;

{
}

String next()
{
while (st == null || !st.hasMoreElements())
{
try
{
}
catch (IOException  e)
{
e.printStackTrace();
}
}
return st.nextToken();
}

int nextInt()
{
return Integer.parseInt(next());
}

long nextLong()
{
return Long.parseLong(next());
}

double nextDouble()
{
return Double.parseDouble(next());
}

String nextLine()
{
String str = "";
try
{
}
catch (IOException e)
{
e.printStackTrace();
}
return str;
}
}

public static void main(String[] args) {
int t=sc.nextInt();
String str=new String("");
while(t-->0)
{
int s=sc.nextInt();
int k=sc.nextInt();
int ar[]=new int[s];
for(int i=0;i<s;i++)
{
ar[i]=sc.nextInt();
if(ar[i]%k==0)
ar[i]=1;
else
ar[i]=0;
str=str+ar[i];
}
System.out.println(str);
}
}
``````

}

I am not familiar with java , but here is my solution with same idea in c++ hope it helps.

CAN SOMEONE HELP ME WITH THIS…
TELL ME WHATS WRONG !!!
#include <stdio.h>

int main(void) {
int t,n,i;
long long k;
scanf("%d",&t);
while(t–)
{
scanf("%d",&n);
scanf("%llu",&k);
long long arr[n];
int a[n];
for(i=0;i<n;i++)
{
scanf("%llu",&arr[i]);
}

``````    for(i=0;i<n;i++)
{
if(arr[i]%k==0)
{a[i]=1;}
else
a[i]=0;
}

for(int i=0;i<n;i++)
{printf("%d",a[i]);}

}
return 0;
``````

}

After every testcase you have to use “\n”
since for every test case you have to print a single line

same bro even i did same just output the 0 or 1 while taking steps size simultaneously and didn’t use extra loop for and still got tle.

CAN SOMEONE PLZZ TELL WHAT’S THE ERROR IN THIS PYTHON CODE(WA)
try:
for i in range(int(input())):
s = str(input())
p = str(input())
l1 = s.split()
l2 = p.split()
n = int(l1[0])
m = int(l1[1])
res = ‘’
for j in range(n):
if (int(l2[j])%m==0):
res = res+‘1’
else:
res = res+‘0’
print(int(res))
except:
pass

#include`<iostream>`

using namespace std;

int main()
{
int t,i,j,n;
cin>>t;

long long a[n],k;
char arr[n];
for(i=0;i<t;i++)
{
cin>>n;
cin>>k;
for(j=0;j<n;j++)
{
cin>>a[j];
if(a[j]%k==0)
{
arr[j]=‘1’;
}
else{arr[j]=‘0’;}
}
cout<<arr<<endl;
}

}

this is my submission a simple one

i say that when i run any submission i got runtime error and when i submit same submission i got right submission . so what i doo. if any one face this problem and solve this. please told mee

please remove the explicit type conversion in the print statement. output should be a string.

1 Like

@aryanag_adm Hi At the time of writing, the “Contest” link in the OP is a 404.

Also, could you change the “Output:” section of the Problem Statement? Unlike most Problems, it doesn’t say “For each test case, print a single line” etc, which has mislead at least one person.

Thanks!

Edit: Make that two

2 Likes

n = int(input())
result = “”
for i in range(n):
dist, stepval = input().split()
stepval = int(stepval)
lis = input().split()
for i in lis:
if int(i) % stepval == 0:
result += “1”
else:
result += “0”
print(result)

I am new to coding, what did I do wrong,
my custom test cases work but after submitting i got a nzec error.

Instead of appending String to a String use StringBuilder. Strings in Java are immutable.

StringBuilder ans= new StringBuilder();
ans.append(Integer. toString (1));