数论好难啊~~

嗯这两道题看似题号、数据范围差的很多,其实有一些共通之处。

先来看一下韩信点兵:

  作为循环语句和判断语句的入门题,相信看我博客的肯定都会。

#include<iostream>
using namespace std;
int a,b,c,i;
int main()
{cin>>a>>b>>c;for(i=7+c;i<=100;i=i+7){if((i%3==a)&&(i%5==b)&&(i>=10)&&(i<=100)){cout<<i<<endl;return 0;}}cout<<"No answer"<<endl;
return 0;
}

根本没必要贴出来的好吧

  下面来介绍一下直接算答案的强方法了。

  ans需要满足三个条件%3==a、%5==b,%7==c;

  那能不能构造出三个数,分别满足一个其中条件并且是另外两个数的公倍数?(这句话是本篇中最重要的话了,其他都是废话)

  比如满足第一个条件的数要求为5和7的倍数,也就是35的倍数。还要%3==a,现在35%3已经等于2了,难道要35*a/2?(我知道a只可能等1 2)不如往后找一找,说不定有%3=1的好数。然后70就是了,很棒。那第一个数就是70*a了。

  然后由于21%5==1,15%7==1,刚好。那么最后答案就是(70*a+21*b+15*c)%105。

  本题中要求10到100之间的,加个判断就行。

 1 #include<iostream>
 2 using namespace std;
 3 int a,b,c,ans;
 4 int main()
 5 {
 6     cin>>a>>b>>c;
 7     ans=(70*a+21*b+15*c)%105;
 8     if(ans>=10&&ans<=100) cout<<ans;
 9     else cout<<"No answer"<<endl;
10 return 0;
11 }

这道题的思想再推广一点会怎么样呢?那就是p1898了。

看不懂题解怎么办啊?没关系,往下看。

我们先处理出所有的a的累乘sum(应该不是sum吧但是我不知道用什么),对每个数找出sum/a[i]的倍数中%a[i]==1的,乘对应的b[i]是满足第i个条件的数。全部相加后对sum取余即为所求。\

果然还是看不懂就对着代码看.

这个代码的复杂度好迷啊...如果要写的话还是学一下exgcd吧(18/12/10);

#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int i,f;
long long wyt(long long x,long long y,long long z)
{if(y==1)return 0;for(f=0;;f++)if(x*f%y==1)break;return f*x*z;
}
long long ans,sum=1;
int n;
long long a[11],b[11];
int main()
{
//freopen("123.in","r",stdin);
//freopen("123.out","w",stdout);cin>>n;for(i=1;i<=n;i++){    cin>>a[i]>>b[i];sum*=a[i];}for(i=1;i<=n;i++){ans+=wyt(sum/a[i],a[i],b[i]);}cout<<ans%sum;
}

由于数较少,就不用快读了哈。

转载于:https://www.cnblogs.com/qywyt/p/9019190.html

p1044与p1898相关推荐

  1. 洛谷——P1044 栈

    P1044 栈--卡特兰数 题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈) ...

  2. [Catalan]求解随机出栈可能数(洛谷P1044题题解,Java语言描述)

    题目要求 P1044题目链接 分析 题意就是:N个数依次进栈,可随机出栈,算一下可能的出栈序列数. 其实这个就是Catalan啊,如果数据结构与算法有一定的刷题积累的学生应该经常做这样的About栈的 ...

  3. 信息学奥赛一本通 1924:【03NOIP普及组】栈 | 洛谷 P1044 [NOIP2003 普及组] 栈

    [题目链接] ybt 1924:[03NOIP普及组]栈 洛谷 P1044 [NOIP2003 普及组] 栈 [题目考点] 递推.递归 栈 [解题思路]:一维递推 设数组a,a[i]表示i个数组成的数 ...

  4. [ CodeVS冲杯之路 ] P1044

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/1044/ 机房连续断网,搞得现在才能上博客-- 很经典的DP题,把问题转换一下就是分别求最不降序列和最长上升序列 f[i ...

  5. 洛谷 P1044 栈 [卡特兰数]

    题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即 poppop (从栈顶弹出一个元素)和 pushpush (将一个元素进栈). 栈 ...

  6. [洛古]P1044 栈

    题目背景 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即 pop(从栈顶弹出一个元素)和 push(将一个元素进栈). 栈的重要性不言自明, ...

  7. 刷题 - 基础数学/数论问题

    突然发现我对于数学相关的问题什么排列组合什么的都不会,主要是我高中排列组合什么的没怎么学,高考数学才110,全靠理综撑着 .而比赛中数学又占据了很大一部分,所以我决定先补一下基础,先刷20道基础题再说 ...

  8. 洛谷【算法1-4】递推与递归

    P1255 数楼梯 对于 100% 的数据,1≤N≤5000. 高精度斐波那契 #include <iostream> using namespace std;const int N = ...

  9. #中队列的数据结构_数据结构与算法拓展(一)

    栈与队列 申明:由于篇幅限制,文章可能有些简略,如果大家想要详细了解,请一定要百度一下,并阅读例题,完成习题 绪言:计算机科学在过去的数十年内发展飞速,各种新颖的技术纷至沓来:5G,VR,AI:大数据 ...

最新文章

  1. matlab节约里程法_芳烃产业链里程碑:唐山旭阳30万吨/年苯乙烯项目一次性开车成功...
  2. 【Python】Python中令人头疼的变量作用域问题,终于弄清楚了
  3. 「AI大咖」ML宗师乔教主,全世界最有影响力的计算机科学家
  4. linux-命令替换-通配符-重定向-管道
  5. 【BZOJ 3171】 [Tjoi2013]循环格
  6. 33:计算分数加减表达式的值
  7. Flutter自定义布局套路
  8. ⟅UNIX网络编程⟆⦔目录
  9. php 微信小程序签到功能,微信小程序每日签到
  10. java-导入 导出 下载模板 等功能
  11. Alipay Global API 境外支付宝接口对接
  12. 输入输入是否为回文(如“abcba”和”123321”都是回文)。(c语言)
  13. java 模块层次结构图_Spring框架模块结构图解析
  14. Stm32中英文手册官网免费
  15. Node.js下载安装与配置淘宝加速器cnpm
  16. C语言实现将彩色BMP位图转化为二值图
  17. HTTPS 到底加密了什么?
  18. MayaToUE4之影视动画制作流程
  19. 实用!!服务器监测邮箱报警
  20. Mac用Visual Studio Code编写C/C++安装配置教程

热门文章

  1. GPL与LGPL的区别
  2. 数据库连接池工作原理
  3. Android应用程序组件Content Provider在应用程序之间共享数据的原理分析(2)
  4. mysql的左连接应用
  5. R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
  6. Aggregate functions cannot be used in the select right after the flatAggregate
  7. 5.1 最小二乘法,左逆,投影矩阵
  8. 微型计算机有多少进制,微型计算机原理二进制十进制十六进制.doc
  9. linux内核研究(一)
  10. 【机器学习】岭回归(L2正则在干嘛!)