P1890 gcd区间
我一开始80分
暴力,模拟
100做法
dp
O(n^2+m)
f[i][j]表示i到j的 gcd
初始化
f[i][i]=i;
f[i][j]=gcd(f[i][j-1],a[j]);
这样查询就到了O(1)

80代码

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<algorithm>
  5. #define p(a) putchar(a)
  6. #define g() getchar()
  7. #define inf 2147483647
  8. #define For(i,a,b) for(register int i=a;i<=b;i++)
  9. using namespace std;
  10.  
  11. void in(int &x)
  12. {
  13. int y=;
  14. char c=g();x=;
  15. while(c<''||c>'')
  16. {
  17. if(c=='-')
  18. y=-;
  19. c=g();
  20. }
  21. while(c<=''&&c>='')x=x*+c-'',c=g();
  22. x*=y;
  23. }
  24.  
  25. void o(int x)
  26. {
  27. if(x<)
  28. {
  29. p('-');
  30. x=-x;
  31. }
  32. if(x>)o(x/);
  33. p(x%+'');
  34. }
  35.  
  36. int gcd(int a,int b)
  37. {
  38. return (b==?a:gcd(b,a%b));
  39. }
  40. int n,m;
  41. int a[];
  42. int l,r,g;
  43. int main()
  44. {
  45. in(n),in(m);
  46. For(i,,n)
  47. in(a[i]);
  48. For(i,,m)
  49. {
  50. in(l),in(r);
  51. g=a[l];
  52. For(j,l+,r)
  53. g=gcd(g,a[j]);
  54. o(g),p('\n');
  55. }
  56. return ;
  57. }

100分

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<cstring>
  4. #include<algorithm>
  5. #define p(a) putchar(a)
  6. #define g() getchar()
  7. #define inf 2147483647
  8. #define For(i,a,b) for(register int i=a;i<=b;i++)
  9. using namespace std;
  10.  
  11. void in(int &x)
  12. {
  13. int y=;
  14. char c=g();x=;
  15. while(c<''||c>'')
  16. {
  17. if(c=='-')
  18. y=-;
  19. c=g();
  20. }
  21. while(c<=''&&c>='')x=x*+c-'',c=g();
  22. x*=y;
  23. }
  24.  
  25. void o(int x)
  26. {
  27. if(x<)
  28. {
  29. p('-');
  30. x=-x;
  31. }
  32. if(x>)o(x/);
  33. p(x%+'');
  34. }
  35.  
  36. int gcd(int a,int b)
  37. {
  38. return (b==?a:gcd(b,a%b));
  39. }
  40. int n,m;
  41. int a[];
  42. int l,r,g;
  43.  
  44. int f[][];
  45.  
  46. int main()
  47. {
  48. in(n),in(m);
  49. For(i,,n)
  50. in(a[i]);
  51. For(i,,n)
  52. f[i][i]=a[i];
  53.  
  54. For(i,,n)
  55. For(j,i+,n)
  56. f[i][j]=gcd(f[i][j-],a[j]);
  57. For(i,,m)
  58. {
  59. in(l),in(r);
  60. o(f[l][r]),p('\n');
  61. }
  62. return ;
  63. }

P1890 gcd区间的更多相关文章

  1. 洛谷 P1890 gcd区间

    P1890 gcd区间 题目提供者 洛谷OnlineJudge 标签 数论(数学相关) 难度 普及/提高- 题目描述 给定一行n个正整数a[1]..a[n]. m次询问,每次询问给定一个区间[L,R] ...

  2. 洛谷——P1890 gcd区间

    P1890 gcd区间 题目描述 给定一行n个正整数a[1]..a[n]. m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数. 输入输出格式 输入格式: 第一行两个整数n ...

  3. 洛谷P1890 gcd区间 [2017年6月计划 数论09]

    P1890 gcd区间 题目描述 给定一行n个正整数a[1]..a[n]. m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数. 输入输出格式 输入格式: 第一行两个整数n ...

  4. 洛谷P1890 gcd区间

    题目描述 给定一行n个正整数a[1]..a[n]. m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数. 输入输出格式 输入格式: 第一行两个整数n,m. 第二行n个整数表 ...

  5. HDU 5726 GCD 区间GCD=k的个数

    GCD Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  6. 洛谷1890 gcd区间

    题目描述 给定一行n个正整数a[1]..a[n].m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数. 输入输出格式 输入格式: 第一行两个整数n,m.第二行n个整数表示a ...

  7. luogu1890 gcd区间

    题目大意:给定一行n个正整数a[1]..a[n].m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数. 因为gcd满足交换律和结合律,所以用线段树维护区间上的gcd值即可. ...

  8. luoguP1890 gcd区间 [st表][gcd]

    题目描述 给定一行n个正整数a[1]..a[n]. m次询问,每次询问给定一个区间[L,R],输出a[L]..a[R]的最大公因数. 输入输出格式 输入格式: 第一行两个整数n,m. 第二行n个整数表 ...

  9. UESTC - 1724 GCD区间求和

    依然是神奇的欧拉函数 若GCD(n,i)=k 则GCD(n/k,i/k)=1, 令i/k=x,有GCD(n/k,x)=1, →k*GCD(n/k,x)=1中x的个数 = GCD(n,i)=k的和 范围 ...

随机推荐

  1. 2017年8道php面试题(真题+答案)

    1.<?php echo count(strlen(“http://php.net”)); ?>的执行结果是? 答案:1 .如果var是普通变量,则返回1.正常情况下返回var中的元素或属 ...

  2. activiti复盘重推的一种简单实现方式:

    activiti复盘重推的一种简单实现方式: 设置流程的每一步让用户选择,比如一共有6步完成,用户选择从第4步开始复盘重推,那么把原来的推演oldId和4传到后台, 首先,后台生成一个新的推演id n ...

  3. linux ------ 使用 TFTP 在两个主机之前传输文件

    TFTP是用来下载远程文件的最简单网络协议,它是基于UDP协议而实现.嵌入式linux的tftp开发环境包括两个方面:一是linux服务器端的tftp-server支持,二是嵌入式目标系统的tftp- ...

  4. Apache 的 ab 压测工具快速使用

    ab 是一个 httpd 自带的很好用的压力测试工具,它是 apache bench 命令的缩写.ab 命令会创建多个并发访问线程,模拟多个访问者同时对某一 URL 地址进行访问.可以用来测试 apa ...

  5. vue axios的使用

    详细可以看:https://www.kancloud.cn/yunye/axios/234845 这里介绍日常使用得比较多的get和post: import axios from 'axios' // ...

  6. WinFrom弹出输入框

    代码上面要引用 using Microsoft.VisualBasic; 还不够,在解决方案的引用那里,也要添加引用 如此,便可打出输入框了: ,); 5个参数分别的意思: 提示信息 标题 如果用户没 ...

  7. vue ssr服务端渲染

    SSR:Server Side Rendering(服务端渲染) 目的是为了解决单页面应用的 SEO 的问题,对于一般网站影响不大,但是对于论坛类,内容类网站来说是致命的,搜索引擎无法抓取页面相关内容 ...

  8. Spark记录-Scala循环语句

    Scala while循环语句 当给定条件为真时,while循环重复一个语句或一组语句.它在执行循环体之前测试条件状态. 只要给定的条件为真,while循环语句重复执行目标语句. object Dem ...

  9. bzoj千题计划279:bzoj4591: [Shoi2015]超能粒子炮·改

    http://www.lydsy.com/JudgeOnline/problem.php?id=4591 最后的式子合并同类项 #include<cstdio> #include<i ...

  10. CF&&CC百套计划4 Codeforces Round #276 (Div. 1) A. Bits

    http://codeforces.com/contest/484/problem/A 题意: 询问[a,b]中二进制位1最多且最小的数 贪心,假设开始每一位都是1 从高位i开始枚举, 如果当前数&g ...