コンテストが随分ご無沙汰だったので参加してきました.
Codeforces Round #61 (Div. 2)
A. Petya and Java
面倒だったので,BigIntegerを使って読み込み.実は,入力は必ず正の数なので,負の方向へのチェックは必要ありませんでした….
- import java.util.*;
- import java.lang.*;
- import java.math.*;
- import java.io.*;
-
- import static java.lang.Math.*;
- import static java.util.Arrays.*;
-
- public class A{
- Scanner sc=new Scanner(System.in);
-
- int INF=1<<28;
- double EPS=1e-9;
-
- void run(){
- BigInteger b=sc.nextBigInteger();
- long[] s={-128, -32768, -2147483648, -9223372036854775808L};
- long[] e={127, 32767, 2147483647, 9223372036854775807L};
- String[] ss={"byte", "short", "int", "long"};
- for(int i=0; i<4; i++){
- if(b.compareTo(new BigInteger(s[i]+""))>=0
- &&b.compareTo(new BigInteger(e[i]+""))<=0){
- println(ss[i]);
- return;
- }
- }
- println("BigInteger");
- }
-
- void println(String s){
- System.out.println(s);
- }
-
- void print(String s){
- System.out.print(s);
- }
-
- void debug(Object... os){
- System.err.println(Arrays.deepToString(os));
- }
-
- public static void main(String[] args){
- new A().run();
- }
- }
import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;
public class A{
Scanner sc=new Scanner(System.in);
int INF=1<<28;
double EPS=1e-9;
void run(){
BigInteger b=sc.nextBigInteger();
long[] s={-128, -32768, -2147483648, -9223372036854775808L};
long[] e={127, 32767, 2147483647, 9223372036854775807L};
String[] ss={"byte", "short", "int", "long"};
for(int i=0; i<4; i++){
if(b.compareTo(new BigInteger(s[i]+""))>=0
&&b.compareTo(new BigInteger(e[i]+""))<=0){
println(ss[i]);
return;
}
}
println("BigInteger");
}
void println(String s){
System.out.println(s);
}
void print(String s){
System.out.print(s);
}
void debug(Object... os){
System.err.println(Arrays.deepToString(os));
}
public static void main(String[] args){
new A().run();
}
}
B. Petya and Countryside
全探索すればOK.
- import java.util.*;
- import java.lang.*;
- import java.math.*;
- import java.io.*;
-
- import static java.lang.Math.*;
- import static java.util.Arrays.*;
-
- public class B{
- Scanner sc=new Scanner(System.in);
-
- int INF=1<<28;
- double EPS=1e-9;
-
- int n;
- int[] a;
-
- void run(){
- n=sc.nextInt();
- a=new int[n];
- for(int i=0; i<n; i++){
- a[i]=sc.nextInt();
- }
- int max=0;
- for(int j=0; j<n; j++){
- int s=1;
- for(int i=j-1; i>=0; i--){
- if(a[i]<=a[i+1]){
- s++;
- }else{
- break;
- }
- }
- for(int i=j+1; i<n; i++){
- if(a[i-1]>=a[i]){
- s++;
- }else{
- break;
- }
- }
- max=max(max, s);
- }
- println(max+"");
- }
-
- void println(String s){
- System.out.println(s);
- }
-
- void print(String s){
- System.out.print(s);
- }
-
- void debug(Object... os){
- System.err.println(Arrays.deepToString(os));
- }
-
- public static void main(String[] args){
- new B().run();
- }
- }
import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;
public class B{
Scanner sc=new Scanner(System.in);
int INF=1<<28;
double EPS=1e-9;
int n;
int[] a;
void run(){
n=sc.nextInt();
a=new int[n];
for(int i=0; i<n; i++){
a[i]=sc.nextInt();
}
int max=0;
for(int j=0; j<n; j++){
int s=1;
for(int i=j-1; i>=0; i--){
if(a[i]<=a[i+1]){
s++;
}else{
break;
}
}
for(int i=j+1; i<n; i++){
if(a[i-1]>=a[i]){
s++;
}else{
break;
}
}
max=max(max, s);
}
println(max+"");
}
void println(String s){
System.out.println(s);
}
void print(String s){
System.out.print(s);
}
void debug(Object... os){
System.err.println(Arrays.deepToString(os));
}
public static void main(String[] args){
new B().run();
}
}
C. Petya and File System
書けば通ると思いましたが,落ちてしまいました.
D. Petya and His Friends
私が考えたのは以下のやり方.
a1 | a2 | a3 | a4 | … | an |
2 | 2 | 2 | 2 | … | |
| 3 | 3 | 3 | … | 3 |
5 | | 5 | 5 | … | 5 |
7 | 7 | | 7 | … | 7 |
これを縦に掛けたものがそれぞれ答え.
実際には,6, 10, 15, 15*2, 15*3, …で十分だったようです.
- import java.util.*;
- import java.lang.*;
- import java.math.*;
- import java.io.*;
-
- import static java.lang.Math.*;
- import static java.util.Arrays.*;
-
- public class D{
- Scanner sc=new Scanner(System.in);
-
- int INF=1<<28;
- double EPS=1e-9;
-
- void run(){
- int n=sc.nextInt();
- if(n==2){
- println("-1");
- return;
- }
- BigInteger[] bis=new BigInteger[n];
- for(int i=0; i<n; i++){
- bis[i]=BigInteger.ONE;
- }
-
- int max=1000;
- int p=0;
- int[] prime=new int[max];
- boolean[] isPrime=new boolean[max+1];
- Arrays.fill(isPrime, true);
- isPrime[0]=isPrime[1]=false;
- for(int i=2; i<=max; i++){
- if(isPrime[i]){
- prime[p++]=i;
- for(int j=2*i; j<=max; j+=i){
- isPrime[j]=false;
- }
- }
- }
-
- for(int j=0; j<n; j++){
- BigInteger bi=new BigInteger(prime[j]+"");
- for(int i=0; i<n-1; i++){
- bis[(j+i)%n]=bis[(j+i)%n].multiply(bi);
- }
- }
- for(int i=0; i<n; i++){
- if(bis[i].toString().length()>100){
- println("-1");
- return;
- }
- }
- for(int i=0; i<n; i++){
- println(bis[i]+"");
- }
- }
-
- void println(String s){
- System.out.println(s);
- }
-
- void print(String s){
- System.out.print(s);
- }
-
- void debug(Object... os){
- System.err.println(Arrays.deepToString(os));
- }
-
- public static void main(String[] args){
- new D().run();
- }
- }
import java.util.*;
import java.lang.*;
import java.math.*;
import java.io.*;
import static java.lang.Math.*;
import static java.util.Arrays.*;
public class D{
Scanner sc=new Scanner(System.in);
int INF=1<<28;
double EPS=1e-9;
void run(){
int n=sc.nextInt();
if(n==2){
println("-1");
return;
}
BigInteger[] bis=new BigInteger[n];
for(int i=0; i<n; i++){
bis[i]=BigInteger.ONE;
}
int max=1000;
int p=0;
int[] prime=new int[max];
boolean[] isPrime=new boolean[max+1];
Arrays.fill(isPrime, true);
isPrime[0]=isPrime[1]=false;
for(int i=2; i<=max; i++){
if(isPrime[i]){
prime[p++]=i;
for(int j=2*i; j<=max; j+=i){
isPrime[j]=false;
}
}
}
for(int j=0; j<n; j++){
BigInteger bi=new BigInteger(prime[j]+"");
for(int i=0; i<n-1; i++){
bis[(j+i)%n]=bis[(j+i)%n].multiply(bi);
}
}
for(int i=0; i<n; i++){
if(bis[i].toString().length()>100){
println("-1");
return;
}
}
for(int i=0; i<n; i++){
println(bis[i]+"");
}
}
void println(String s){
System.out.println(s);
}
void print(String s){
System.out.print(s);
}
void debug(Object... os){
System.err.println(Arrays.deepToString(os));
}
public static void main(String[] args){
new D().run();
}
}
ooxo- 3226p 68位
1506 -> 1694
紫コーダーになりました.