화폐 교환 문제 HDU 1284

2340 단어 ACM항주 전기
화폐 교환 문제 시간 제한: 2000/1000 MS (Java/Others) 메모리 제한: 65536/32768 K (Java/Others) 총 제출 물 (s): 6538 허 용 된 제출 물 (s): 3780
Problem Description
한 나라 에 서 는 1 점, 2 점, 3 점 짜 리 동전 만 있 고, 돈 N 을 동전 으로 바 꾸 는 것 은 여러 가지 방법 이 있다.당신 이 프로그램 을 짜 서 모두 몇 가지 환전 방법 이 있 는 지 계산 해 주세요.
Input
줄 마다 하나의 정수 N 만 있 고 N 은 32768 보다 작다.
Output
모든 입력, 출력 교환 방법 수 에 대응 합 니 다.
Sample Input
2934 12553
Sample Output
718831 13137761
1. 먼저 3 분 짜 리 동전 의 최대 치 를 확정 한 다음 에 각 3 분 짜 리 동전 이 찾 을 수 있 는 최대 치 를 구한다. 즉, 이때 2 분 짜 리 동전 의 종 수 는 2 분 짜 리 동전 의 최대 치 에 1 (2 분 짜 리 동전 은 0) 을 더 할 수 있다.모든 2 분 화 폐 를 이때 의 총 수 를 누적 하면 최종 치 를 얻 을 수 있다.(제목 을 3 푼 의 수치 상황 에 따라 2 푼 을 구 하 는 경우 총수 로 바 꿉 니 다) 2. 인터넷 에서 다른 사람의 코드 를 보면 이것 은 완전한 가방 문제 라 고 합 니 다. 좋 습 니 다. 지금 은 수준 이 부족 하고 잘 모 르 겠 습 니 다. 관심 있 는 친구 들 이 볼 수 있 습 니 다.
#include<iostream>
#include<cstring>
#include<math.h>
#include <stdio.h>

using namespace std;

int main()
{
    int one,two,three;
    int N,flag = 0;

    while(~scanf("%d",&N))
    {
        flag =0 ;
       three = N /3;
       for(int i = 0; i <= three; i++)
       {
           two = (N - (i * 3))/2;
           flag += (two+1);
       }
       if(N) cout << flag  <<endl;
       else cout << "0" << endl;
    }

    return 0;
}

좋은 웹페이지 즐겨찾기