[CCF 2017] 진짜 문 제 는 계속 업데이트 되 고 있 습 니 다.

3902 단어 알고리즘CCF
최소 차이
문제 설명
문제 설명 은 n 개의 수 를 정 합 니 다. 그 중에서 차이 (차 의 절대 치) 가 가장 작은 두 개의 수 를 찾 아 그들의 차 이 를 출력 하 십시오.입력 형식 입력 첫 줄 은 정수 n 을 포함 합 니 다.두 번 째 줄 은 n 개의 정 수 를 포함 하고 인접 정수 사이 에 빈 칸 으로 구분 합 니 다.출력 형식 은 정 수 를 출력 하여 답 을 표시 합 니 다.샘플 입력 5154820 사례 출력 1 사례 는 차이 가 가장 작은 두 수 는 5 와 4 이 고 이들 의 차 이 는 1 이다.샘플 입력 59, 3, 6, 13 사례 출력 0 사례 는 두 개의 똑 같은 수 3 이 있 음 을 설명 합 니 다. 이들 간 의 차 이 는 0 입 니 다. 데이터 규모 와 약정 은 모든 평가 사례 에 대해 2 ≤ n ≤ 1000 이 고 주어진 정 수 는 10000 을 초과 하지 않 는 정수 입 니 다.
분석 하 다.
간단 해 요. 정렬 하고 다음 거. - 앞 에 제일 작은 거 찾 으 면 돼 요.
게임.
문제 설명
n 명의 어린이 가 한 바퀴 돌 며 게임 을 합 니 다. 어린 이 는 1 번 부터 n 번 까지, 2 번 어린 이 는 1 번 어린이 가 시계 방향 으로, 3 번 어린 이 는 2 번 어린이 가 시계 방향 으로, 1 번 어린 이 는 n 번 어린이 가 시계 방향 으로 앉 아 있 습 니 다.게임 을 시작 하면 1 번 어린이 부터 시계 방향 으로 번 호 를 매기 기 시작 합 니 다. 그 다음 에 모든 어린이 들 의 번 호 는 지난 어린이 가 보고 한 숫자 에 1 을 더 하 는 것 입 니 다.만약 에 한 어린이 가 k 의 배수 나 그 마지막 자리 (즉, 수의 한 자리) 가 k 라면 이 어린 이 는 탈락 되 어 이후 의 번호 에 참가 하지 않 는 다.게임 에 한 명의 어린이 만 남 았 을 때 이 어린 이 는 이 겼 다.예 를 들 어 n = 5, k = 2 시: 1 번 어린이 번호 1;2 번 어린이 번호 2 탈락;3 번 어린이 번호 3;4 번 어린이 번호 4 탈락;5 번 어린이 번호 5;1 번 어린이 번호 6 탈락;3 번 어린이 번호 7;5 번 어린이 번호 8 탈락;3 번 어린이 가 이 겼 습 니 다.
n 과 k 를 정 합 니 다. 마지막 에 이 긴 어린이 번 호 는 몇 번 입 니까?두 개의 정수 n 과 k 를 포함 하여 한 줄 을 입력 하 십시오. 의 미 는 제목 과 같 습 니 다.출력 형식 출력 한 줄 은 이 긴 어린이 번 호 를 나타 내 는 정 수 를 포함 합 니 다.샘플 입력 52 샘플 출력 3 샘플 입력 7 3 샘플 출력 4 데이터 규모 와 약정 에 대한 모든 평가 용례, 1 ≤ n ≤ 1000, 1 ≤ k ≤ 9.
분석 하 다.
조세 프 링 과 비슷 하지만 이 번 호 는 연속 적 이 며 1 부터 배열 로 게임 과정 을 모 의 하지 않 아 도 됩 니 다. 탈락 인원 = n - 1 일 때 순환 이 멈 춥 니 다.처음에 90 은 k = = 1 을 고려 하지 않 은 상황 이 었 습 니 다. 이때 내부 의 for 순환 이 모두 끝 났 습 니 다. break 판단 을 추가 해 야 합 니 다.
코드
#include
#include
#include
#include
#include
#include
using namespace std;
const int maxx = 1000;
int kids[maxx + 5];
int main()
{
    int n, k;
    while (cin>>n>>k)
    {
        for (int i = 1; i <= n; i++)kids[i] = 1;
        int out = 0,num = 1;
        while (out1)
        {
            for (int i = 1; i <= n; i++)
            {
                if (kids[i]) 
                { kids[i] = num; 
                if (num%k == 0 || num % 10 == k) { kids[i] = 0; out++; }
                num++; }
                if (out == n - 1)break;
            }
        }
        for (int i = 1; i <= n; i++)
            if (kids[i])printf("%d
"
, i); } }

좋은 웹페이지 즐겨찾기