华东交通大学2017年ACM“双基”程序设计竞赛 1009

Problem Description

MDD随机生成了n(n<le5)个随机数x(x<=1e9),
这n个随机数排成一个序列,MDD有q(q<=le5)个询问,
每个询问给你一个a,问你这个序列中有多少个区间的最大公约数不为a

Input

第一行输入一个T,表示T组测试样例
每组样例包含一个n,表示n个随机数
再输入一个Q,表示Q个询问
每个询问输入一个a

Output

每个询问输出有多少个区间的gcd不为a

Sample Input

1
5
1 2 4 4 1
4
1
2
3
4

Sample Output

6
12
15
12

解法:听说还是暴力啊,卧槽

 1 #include <bits/stdc++.h>
 2 #define int long long
 3
 4 using namespace std;
 5
 6 int nextInt(){
 7     int d;
 8     scanf("%lld",&d);
 9     return d;
10 }
11
12 map<int,int> mp;
13 int a[100010];
14 int b[100010];
15
16 int gcd(int a,int b){
17     if(a > b){
18         swap(a,b);
19     }
20     while(a > 0){
21         int k = b % a;
22         b = a;
23         a = k;
24     }
25     return b;
26 }
27
28 signed main(){
29     int T = nextInt();
30     while(T--){
31         mp.clear();
32         int n = nextInt();
33         for(int i = 0 ; i < n ; i++){
34             a[i] = nextInt();
35             mp[a[i]]++;
36         }
37         for(int i = 0 ; i < n ; i++){
38             for(int j = 0 ; j < n - i - 1 ;  j++){
39                 b[j] = gcd(a[j],a[j+1]);
40             }
41             for(int j = 0 ; j < n - i - 1 ; j++){
42                 a[j] = b[j];
43                 mp[a[j]]++;
44             }
45         }
46         int q = nextInt();
47         while(q--){
48             int a = nextInt();
49             printf("%lld\n",n*(n+1)/2 - mp[a]);
50         }
51     }
52     return 0;
53 }
时间: 2024-10-04 18:18:09

华东交通大学2017年ACM“双基”程序设计竞赛 1009的相关文章

华东交通大学2017年ACM“双基”程序设计竞赛 1003

Problem Description 有两个球在长度为L的直线跑道上运动,两端为墙.0时刻小球a以1m/s的速度从起点向终点运动,t时刻小球b以相同的速度从终点向起点运动.问T时刻两球的距离.这里小球与小球.小球与墙的碰撞均为弹性碰撞,所有过程没有能量损失. Input 先输入一个q,代表q组数据,然后每组3个整数 L,t,T.1<=L<=1000;0<=t<=1000;t<=T<=1000; Output 一个整数,代表答案. Sample Input 2 10 4

华东交通大学2017年ACM“双基”程序设计竞赛

大吉大利今晚吃鸡 Problem Description 最近流行吃鸡,那就直接输出一行"Winner winner ,chicken dinner!"(没有双引号)模板代码:#include <stdio.h>int main(){printf("hello world\n");return 0;} Input 没有输入 Output 输出一行"Winner winner ,chicken dinner!"注意要换行 Sample

华东交通大学2017年ACM“双基”程序设计竞赛 1002

Problem Description 一天YZW参加了学校组织交际舞活动,活动的开始活动方分别给男生和女生从1-n进行编号,按照从小到大顺时针的方式进行男女搭档分配,相同编号的男女组合成一对,例如一号男生与一号女生配对,以此类推.可是YZW对其中一个小姐姐一见钟情,于是机智的他向管理员提出了两种操作1.在这种情况下,管理员会给出移动的方向和大小,然后所有的男生向着这个方向移动x个位置.2.管理员会把相邻的奇数和偶数位置上的男生互换.在其中女生的位置是不会变的.可是YZW不知道经过这些Q次操作后

华东交通大学2017年ACM“双基”程序设计竞赛 1010

Problem Description 定义操作:将数 n 变为 f(n) = floor(sqrt(n)).即对一个数开平方后,再向下取整.如对 2 进行一次操作,开平方再向下取整, 1.414213562..... = 1 , 即变为了 1 .现在给出一个数 n,如果能在 5 次操作内把 n 变为 1,则输出操作次数:如果则超过5次输出"QAQ".数据范围:1<= n <= 10^100 Input 多组输入,每行输入一个数 n. Output 每组数据输出要多少次操作

华东交通大学2017年ACM“双基”程序设计竞赛 1001

Problem Description 最近流行吃鸡,那就直接输出一行"Winner winner ,chicken dinner!"(没有双引号)模板代码:#include <stdio.h>int main(){printf("hello world\n");return 0;} Input 没有输入 Output 输出一行"Winner winner ,chicken dinner!"注意要换行 Sample Output Wi

华东交通大学2017年ACM“双基”程序设计竞赛 1005

Problem Description 假设你有一个矩阵,有这样的运算A^(n+1) = A^(n)*A (*代表矩阵乘法)现在已知一个n*n矩阵A,S = A+A^2+A^3+...+A^k,输出S,因为每一个元素太大了,输出的每个元素模10 Input 先输入一个T(T<=10),每组一个n,k(1<=n<=30, k<=1000000) Output 输出一个矩阵,每个元素模10(行末尾没有多余空格) Sample Input 1 3 2 0 2 0 0 0 2 0 0 0

华东交通大学2018年ACM“双基”程序设计竞赛 C. 公式题 (2) (矩阵快速幂)

题目链接:公式题 (2) 比赛链接:华东交通大学2018年ACM"双基"程序设计竞赛 题目描述 令f(n)=2f(n-1)+3f(n-2)+n,f(1)=1,f(2)=2 令g(n)=g(n-1)+f(n)+n*n,g(1)=2 告诉你n,输出g(n)的结果,结果对1e9+7取模 输入描述: 多组输入,每行一个整数n(1<=n<=1e9),如果输入为0,停止程序. 输出描述: 在一行中输出对应g(n)的值,结果对1e9+7取模. 示例1 输入 1 5 9 456 0 输出

华东交通大学2015年ACM“双基”程序设计竞赛1004

Problem D Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 945   Accepted Submission(s) : 121 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 阿黄的银行最近有发行了一种新面额的钞票面值为4,所

华东交通大学2015年ACM“双基”程序设计竞赛1002

Problem B Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 698   Accepted Submission(s) : 342 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 阿黄是一个小气的银行家,他有了一个银行,出版了4种