1308: 机器人(2013年校赛初赛)

题目描述

有一个机器人,他有两种前进方式,飞或者跑,如果是跑的话,一次能够跑a距离,飞的话一次能够飞b个距离。问,给出一段距离,他能够用多少种方式刚好到达?

输入

输入包含多组测试样例,以判断输入到达文件尾(EOF)终止程序。

每个测试样例第一行输入三个整数N ( 0 < N <= 10^6 ),a和b,(0<a,b)

输出

对于每个输入样例,立刻输出他对应的答案。输出占一行,只包含一个整数M,即完成这段路程有几种方式?由于结果可能过大,因此取余10000007。如果没有办法刚好达到,则输出0;

样例输入
1 1 2
6 2 3
5 3 4
样例输出
1
2
0
//直接暴力枚举,但是时间超限
import java.util.Scanner;

public class Main {
    public static void out(){
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
            int n=in.nextInt();
            int a=in.nextInt();
            int b=in.nextInt();
            //
            int count=0;
            for (int i = 0; i < n/b+2; i++) {
                for (int j = 0; j < n/a+2; j++) {
                    if (a*j+i*b == n) {
                        count++;
                        count = count%10000007;
                    }
                }
            }
            System.out.println(count);
        }
    }
    public static void main(String[] args){
        out();
    }
}