• 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
  • 相关阅读:
    ConcurrentHashMap、Collections.synchronizedMap、Hashtable讨论(区别)java集合框架【3】 java1.5新特性
    struts2中方法拦截器(Interceptor)的中的excludeMethods与includeMethods的理解
    java抽象类详解以及与接口区别
    乐观锁理解
    URI和URL的区别
    JavaScript编程笔记
    2007年3月9日早上来到深圳……
    axWindowsMediaPlayer1控件循环播放方法
    C#中调用存储过程笔记(原)
    js日期选择控件(Asp.Net可用)
  • 原文地址:https://www.cnblogs.com/jiqimin/p/10638980.html
Copyright © 2020-2023  润新知