๋ฌธ์
์๋น์ด๋ ๋์ N๋ช ๊ณผ ์จ๋ฐ๊ผญ์ง์ ํ๊ณ ์๋ค. ์๋น์ด๋ ํ์ฌ ์ S์ ์๊ณ , ๋์์ A1, A2, ..., AN์ ์๋ค.
์๋น์ด๋ ๊ฑธ์ด์ ์ด๋์ ํ ์ ์๋ค. ์๋น์ด์ ์์น๊ฐ X์ผ๋ ๊ฑท๋๋ค๋ฉด 1์ด ํ์ X+D๋ X-D๋ก ์ด๋ํ ์ ์๋ค. ์๋น์ด์ ์์น๊ฐ ๋์์ด ์๋ ์์น์ ๊ฐ์ผ๋ฉด, ๋์์ ์ฐพ์๋ค๊ณ ํ๋ค.
๋ชจ๋ ๋์์ ์ฐพ๊ธฐ์ํด D์ ๊ฐ์ ์ ํ๋ ค๊ณ ํ๋ค. ๊ฐ๋ฅํ D์ ์ต๋๊ฐ์ ๊ตฌํด๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N(1 โค N โค 105)๊ณผ S(1 โค S โค 109)๊ฐ ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์ ๋์์ ์์น Ai(1 โค Ai โค 109)๊ฐ ์ฃผ์ด์ง๋ค. ๋์์ ์์น๋ ๋ชจ๋ ๋ค๋ฅด๋ฉฐ, ์๋น์ด์ ์์น์ ๊ฐ์ง ์๋ค.
์ถ๋ ฅ
๊ฐ๋ฅํ D๊ฐ์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
ํ์ด
์๊ณ ๋ฆฌ์ฆ ํ๋ฆ
๋ฌธ์ ์์ ์ฃผ์ด์ง๋ ๊ฐ๋ค์ด ์กฐ๊ธ ๋ชจํธํ๊ฒ ์ ํ์๋ค. ์ฌ๊ธฐ์ ๋งํ๋ D๋ ์๋น์ด๊ฐ ํ๋ฒ์ ์์ง์ผ์์๋ ๋ณดํญ์ผ๋ก ๋ณด๋๊ฒ์ด ๋ง๋ค.
์๋ฅผ๋ค์ด D๊ฐ์ด 2์ด๋ฉด 2,4,6,8... ๋ก๋ง ์์ง์ผ์ ์๋๊ฒ์ด๊ณ , 13์ด๋ฉด 13,26,39...์ผ๋ก ์์ง์ผ์์๋๊ฒ์ด๋ค.
์ด๊ฒ์ ๋์ ํ๋ฉด ๋ฌธ์ ๋ฅผ ํ์์๋ค. ์์ ๋ฅผ ํตํด ์๋ฅผ ๋ค์ด๋ณด์.
1 O 3 O O O 7 O O O 11
- ์๋น์ด๋ 3๋ฒ์์ ์ถ๋ฐํ๋ค.
- ๋ณดํญD๋ก ์์ชฝ์ผ๋ก ์์ง์ด๋ฉฐ ๋ชจ๋ ๋์(1,7,11)์ ์ฐพ์ผ๋ ค๋ฉด
D = 2
์ผ๊ฒ์ด๋ค. - 1๊น์ง
abs(3-2)
๋ก ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ๊ณ , 7๊น์งabs(3+2*2)
๋ก ๋ฐฉ๋ฌธํ๊ณ , 11๊น์งabs(3+2*4)
๋ก ๋ฐฉ๋ฌธ์ด ๊ฐ๋ฅํ๋ค.
์ฝ๋
์ฒซ๋ฒ์งธ ์๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ์จ๋ฐ๊ผญ์ง6 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] split = br.readLine().split(" ");
int n = Integer.parseInt(split[0]); //๋์์ ์
int subin = Integer.parseInt(split[1]); //์๋น์ด ์์น
String[] split1 = br.readLine().split(" ");
int res = 0;
int[] arr = new int[n];
for(int i=0; i<n; i++){
//์๋น์ด์ ๋์์ ์์น์ ์ฐจ๋ฅผ ๊ตฌํด์ค๋ค.
int brother = Integer.parseInt(split1[i]);
arr[i] = Math.abs(brother-subin);
}
if(n == 1){
res = Math.abs(arr[0]-subin);
}else {
res = arr[0];
for(int i=1; i<n; i++){
res = gcd(res,arr[i]);
}
}
System.out.println(res);
br.close();
}
public static int gcd(int a, int b){
if(b == 0){
return a;
}
return gcd(b, a%b);
}
}
๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ์คํจํ์๋ค.
์์ธํ๋ณด๋ if(n == 1){res = Math.abs(arr[0]-subin);
์ด๋ถ๋ถ์ด ๋ฌธ์ ์๋ค. ์์์ arr[0]
์์ ์ด๋ฏธ abs๊ฐ์ ๊ตฌํด๋๊ณ ํ๋ฒ๋ ๊ณ์ฐํ๊ณ ์์๋ค... ๋ฐ๋ณด
๋๋ฒ์งธ์๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ์จ๋ฐ๊ผญ์ง6 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] split = br.readLine().split(" ");
int n = Integer.parseInt(split[0]); //๋์์ ์
int subin = Integer.parseInt(split[1]); //์๋น์ด ์์น
String[] split1 = br.readLine().split(" ");
int res = 0;
int[] arr = new int[n];
for(int i=0; i<n; i++){
//์๋น์ด์ ๋์์ ์์น์ ์ฐจ๋ฅผ ๊ตฌํด์ค๋ค.
int brother = Integer.parseInt(split1[i]);
arr[i] = Math.abs(brother-subin);
}
res = arr[0];
if(n != 1){
for(int i=1; i<n; i++){
res = gcd(res,arr[i]);
}
}
System.out.println(res);
br.close();
}
public static int gcd(int a, int b){
if(b == 0){
return a;
}
return gcd(b, a%b);
}
}
์ฑ๊ณต!
๋ต์ ์์ฐพ์๋ณด๊ณ ๋ ํ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ์๋ค. ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํด์ผํ๋ ๋ฌธ์ ๋ผ๋๊ฒ์ ์๊ฐํ ์์์๋๊น์ง ์ฐ์ตํด์ผ ๋๊ฒ ๋ค.