CodeForces_Div2_276_A +鸽巢原理

一.鸽巢原理(抽屉原理)

1.基础点

把n+1个物体放入n个盒子里,则至少有一个盒子里含有两个或两个以上的物体 。

2.强化点

当n只鸽子飞进m个巢时,必定至少有一个巢中飞进了r只

在这里插入图片描述

3.运用

只用于证明是否存在的问题

二.Codeforces Round #276 (Div. 2) A.Factory

在这里插入图片描述

1.题目的意思是说:第一天有a个材料,每天多生成a%m个材料,当a%m=0时,停止生产计划。

2.暴力可以直接解,比如m是[1,1e5],那么循环1e6就可。

3.找规律,当a%m为前面出现过的余数时,必回陷入循环,则生产不会停止。如果m次内a%m都不为0,则根据鸽巢原理,从m+1次开始,都会出现[1,m]的数,不会出现0,所以循环m次即可。

4.代码(java,c++)

#include<bits/stdc++.h>
using namespace std;

int main(){
    int a,m;
    cin >> a >> m;
    bool stop = false;
    for (int i = 0; i < m; i++){
        int tmp = a % m;
        if (tmp == 0){
            stop = true;
            break;
        }
        a += tmp;
    }
    if (stop)   cout << "Yes" << endl;
    else cout << "No" << endl;
    return 0;
}
import java.util.*;
public class D2_276_A{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int m = sc.nextInt();
        boolean stop = false;
        for (int i = 0; i < m; i++){
            int tmp = a % m;
            if (tmp == 0){
                stop = true;
                break;
            }
            a += a % m;
        }
        if (stop) System.out.println("Yes");
        else System.out.println("No");
        sc.close();
    }
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值