 # Having problem in memset

I am solving a problem josephus problem where i require to set all elements of array to 1, but by using memset its not happening.I tried printing the array it has been filled by a random number. My solution to problem is correct(i placed 1 manually and checked).I have used memset before too but never faced this problem.(i tried running it on cses and clion).
the line i used is:
int arr[n];
memset (arr,1,sizeof(arr));

My code is provided below:(line 44)

#include<bits/stdc++.h>
using namespace std;

long long multi(long long a, long long b, long long mod){
return (a * b) % mod;
}

long long power(long long a, long long b, long long mod){
long long powans = 1;

for(; b > 0; a = multi(a, a, mod), b /= 2) if(b % 2 == 1) powans = multi(powans, a, mod);

return powans;
}

void fastscan(int &x)
{
bool neg=false;
register int c;
x =0;
c=getchar();
if(c=='-')
{
neg = true;
c=getchar();
}
for(;(c>47 && c<58);c=getchar())
x = (x<<1) + (x<<3) +c -48;
if(neg)
x *=-1;
}

int gcd(int a,int b){
if(a%b==0)
return b;
else
return gcd(b,a%b);
}

void solve(){
int n;
fastscan(n);
int arr[n];
memset (arr,1,sizeof(arr));
int count=0;
int del=0;
int i=0;
while(del!=n){
if(arr[i]==1){
if(count==1){
cout<<i+1<<" ";
count=0;
del++;
arr[i]=0;
}
else
count++;
}
i++;
if(i==n)
i=0;
}
}
int main(){

#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
freopen("error.txt","w",stderr);
#endif
ios_base::sync_with_stdio(false);
cin.tie(NULL);
solve();
return 0;
}


Any help is appreciated thanks.

memset works only for -1,0,+\infty → 0x3f,-\infty → 0xc0. fill_n() is a wiser choice if the array in one-dimensional

2 Likes

Thank you for the help.