zoukankan      html  css  js  c++  java
  • P1495 曹冲养猪

    题目描述

    自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪,可是曹冲满不高兴,于是在工作中马马虎虎,有一次曹操想知道母猪的数量,于是曹冲想狠狠耍曹操一把。举个例子,假如有16头母猪,如果建了3个猪圈,剩下1头猪就没有地方安家了。如果建造了5个猪圈,但是仍然有1头猪没有地方去,然后如果建造了7个猪圈,还有2头没有地方去。你作为曹总的私人秘书理所当然要将准确的猪数报给曹总,你该怎么办?

    输入输出格式

    输入格式:

    第一行包含一个整数n (n <= 10) – 建立猪圈的次数,解下来n行,每行两个整数ai, bi( bi <= ai <= 1000), 表示建立了ai个猪圈,有bi头猪没有去处。你可以假定ai,aj互质.

    输出格式: 输出包含一个正整数,即为曹冲至少养母猪的数目。

    首先看到这道题的时候,第一眼就看到了假定ai,aj互质,然后就很容易想到中国剩余定理(想到了也不会写QAQ

    就是一道裸的中国剩余定理的板子题

    代码如下:

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<iostream>
     4 #include<cmath>
     5 typedef long long ll;
     6 using namespace std;
     7 ll n, a[11], b[11], ans = 0, cnt = 1;//数组开15会runtime error(在其他评测机上试的就这样QAQ)
     8 void exgcd(ll a, ll b, ll &x, ll &y) {
     9     if(b == 0) {
    10         x = 1;
    11         y = 0;
    12     } else {
    13         exgcd(b,a%b,x,y);
    14         ll temp = x;
    15         x = y;
    16         y = temp - a / b * y;
    17     }
    18 }
    19 void china() {
    20     ll p, q, x, y;
    21     for(ll i = 1; i <= n; i++) {
    22         p = cnt / a[i];
    23         exgcd(p,a[i],x,y);
    24         ans = ((ans + p * x * b[i]) % cnt + cnt) % cnt;
    25     }
    26 }
    27 int main() {
    28     scanf("%lld", &n);
    29     for(ll i = 1; i <= n; i++) {
    30         scanf("%lld %lld", &a[i], &b[i]);
    31         cnt *= a[i];
    32     }
    33     china();
    34     printf("%lld
    ", ans);
    35     return 0;
    36 }
    View Code
  • 相关阅读:
    网站漏洞扫描工具Uniscan
    iOS 11开发教程(八)定制iOS11应用程序图标
    iOS 11开发教程(七)编写第一个iOS11代码Hello,World
    UDP转TCP隧道工具udptunnel
    iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面
    Web服务评估工具Nikto
    iOS 11开发教程(五)iOS11模拟器介绍二
    网络数据修改工具netsed
    iOS 11开发教程(四)iOS11模拟器介绍一
    兼容IE getElementsByClassName取标签
  • 原文地址:https://www.cnblogs.com/jiqimin/p/10638980.html
Copyright © 2011-2022 走看看