AOJ1105 Unable Count
問題リンク Unable Count
- 概要
3つの整数N, a, bが与えられる。1〜Nの整数の中で、a*i+b*jの形で表現できるもの(i, jは非負整数)の個数を答えよ。
N, a, b <= 10^6
- 解法
DPです。整数xはx-a, x-bのいずれかが表現できれば表現できることになります。
- ソース
import java.util.Scanner; //Unable Count public class AOJ1105 { void run(){ Scanner sc = new Scanner(System.in); while(true){ int n = sc.nextInt(); int a = sc.nextInt(); int b = sc.nextInt(); if((n|a|b)==0)break; boolean[] p = new boolean[n+1]; p[0] = true; int c = 0; for(int i=1;i<=n;i++){ if(i-a>=0&&p[i-a])p[i]=true; if(i-b>=0&&p[i-b])p[i]=true; if(!p[i])c++; } System.out.println(c); } } public static void main(String[] args) { new AOJ1105().run(); } }