LockersDivOne(Member SRM 482 Div1 Easy)
愚直なシミュレーションでも動くことを確認.
- public class LockersDivOne{
- public int lastOpened(int n){
- int[] a=new int[n];
- int[] b=new int[n];
- int last=n;
- for(int i=0;i<n;i++)
- a[i]=i;
- for(int s=2;;s++){
- int k=0;
- for(int i=0;i<last;i++){
- if(i%s!=0)
- b[k++]=a[i];
- }
- last=k;
- if(last<=1)
- return b[0]+1;
- for(int i=0;i<last;i++)
- a[i]=b[i];
- }
- }
- }
public class LockersDivOne{
public int lastOpened(int n){
int[] a=new int[n];
int[] b=new int[n];
int last=n;
for(int i=0;i<n;i++)
a[i]=i;
for(int s=2;;s++){
int k=0;
for(int i=0;i<last;i++){
if(i%s!=0)
b[k++]=a[i];
}
last=k;
if(last<=1)
return b[0]+1;
for(int i=0;i<last;i++)
a[i]=b[i];
}
}
}
0 件のコメント:
コメントを投稿