样例输入 41423 样例输出 Jolly 思路: 1)输入的n个整数存储到数组a中 2)将数组a中的相邻元素的差的绝对值存入数组b中(注意:此时b数组元素个数比a数 组元素个数少l,遍历b数组时,要注意下标的终止值):b=abs(ai+1]-a[i),abs 表示求绝对值的函数 3)用sort函数对b数组排序:sort(b,b+n-):表示对b数组从小到大来排序。从下标为0 的位置开始,不包括b+n-1 4)遍历b数组,如果当前的元素b[)不等于i+1,则表示不存在跳跃1到n1的跳跃,用 X=0表示不存在跳跃,X=1表示存在跳跃,根据x的值来进行处理 #include <bits/stdc++.h> using namespace std; int main() int a[3000]; intb[3000] int n; cin>>n; int i; intx=1; if(n!=1) { for(i=0:i<n:i++) cin>>ali]; } for(i=0;i<n-1;i++) b[i]=(abs)(a[i+1]-a[i]); sort(b,b+n-1);
样例输入 4 1 4 2 3 样例输出 Jolly 思路: 1) 输入的 n 个整数存储到数组 a 中 2 )将数组 a 中的相邻元素的差的绝对值存入数组 b 中(注意:此时 b 数组元素个数比 a 数 组元素个数少 1,遍历 b 数组时,要注意下标的终止值): b[i] = abs(a[i+1] - a[i]) ,abs 表示求绝对值的函数 3) 用 sort 函数对 b 数组排序: sort(b,b+n-1):表示对 b 数组从小到大来排序。从下标为 0 的位置开始,不包括 b+n-1 4) 遍历 b 数组,如果当前的元素 b[i] 不等于 i+1,则表示不存在跳跃 1 到 n-1 的跳跃,用 x = 0 表示不存在跳跃,x = 1 表示存在跳跃,根据 x 的值来进行处理 #include <bits/stdc++.h> using namespace std; int main() { int a[3000]; int b[3000]; int n; cin >> n; int i; int x = 1; if( n != 1) { for(i = 0 ; i < n ; i ++) { cin >>a[i]; } for(i = 0; i < n -1 ; i ++) { b[i] = (abs)(a[i+1]-a[i]); } sort(b,b+n-1);
for(i=0;i<n-1;i++) if(b[i]!=i+1) X=0: break; } if(x==1) cout <<"Jolly"<<endl: } else cout <<"Not jolly"<<endl if(n==1) cout <<"Jolly"<<endl: 61.5-08石头剪刀布 描述 石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一 样,则不分胜负。 一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如: “石头-布-石头-剪刀-石头-布-石头-剪刀..”,就是以“石头-布-石头-剪刀”为周期不断循环 的。请问,小A和小B比了N轮之后,谁赢的轮数多? 输入 输入包含三行。 第一行包含三个整数:N,NA,NB,分别表示比了N轮,小A出拳的周期长度,小B出 拳的周期长度。0<N,NA,NB<1O0。 第二行包含NA个整数,表示小A出拳的规律
for(i = 0; i < n-1 ;i ++ ) { if(b[i] != i+1) { x = 0; break; } } if( x == 1) { cout <<"Jolly" << endl; } else { cout << "Not jolly" <<endl; } } if( n == 1) { cout <<"Jolly" << endl; } } 6 1.5-- 08 石头剪刀布 描述 石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一 样,则不分胜负。 一天,小 A 和小 B 正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如: “石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环 的。请问,小 A 和小 B 比了 N 轮之后,谁赢的轮数多? 输入 输入包含三行。 第一行包含三个整数:N,NA,NB,分别表示比了 N 轮,小 A 出拳的周期长度,小 B 出 拳的周期长度。0 < N,NA,NB < 100。 第二行包含 NA 个整数,表示小 A 出拳的规律
第三行包含NB个整数,表示小B出拳的规律。 其中,0表示“石头”,2表示“剪刀”,5表示“布”。相邻两个整数之间用单个空格隔开。 输出 输出一行,如果小A赢的轮数多,输出A:如果小B赢的轮数多,输出B:如果两人 打平,输出draw。 样例输入 1034 025 0502 样例输出 1 提示 对于测试数据,猜拳过程为: A:0250250250 B:0502050205 A赢了4轮,B赢了2轮,双方打平4轮,所以A赢的轮数多 71.7--09向量点积 描述 在线性代数、计算几何中,向量点积是一种十分重要的运算。 给定两个n维向量a=(al,a2.,an)和b=(bl,b2,,bn),求点积ab=albl+a2b2+.+anbn。 输入 第一行是一个整数n。1<=n<=1000。 第二行包含n个整数al,a2,,an。 第三行包含n个整数bl,b2,,bn。 相邻整数之间用单个空格隔开。每个整数的绝对值都不超过1000。 输出 一个整数,即两个向量的点积结果。 样例输入 3 146 215 样例输出 36 #include <bits/stdc++.h> using namespace std: int main()
第三行包含 NB 个整数,表示小 B 出拳的规律。 其中,0 表示“石头”,2 表示“剪刀”,5 表示“布”。相邻两个整数之间用单个空格隔开。 输出 输出一行,如果小 A 赢的轮数多,输出 A;如果小 B 赢的轮数多,输出 B;如果两人 打平,输出 draw。 样例输入 10 3 4 0 2 5 0 5 0 2 样例输出 A 提示 对于测试数据,猜拳过程为: A:0 2 5 0 2 5 0 2 5 0 B:0 5 0 2 0 5 0 2 0 5 A 赢了 4 轮,B 赢了 2 轮,双方打平 4 轮,所以 A 赢的轮数多 7 1.7----09 向量点积 描述 在线性代数、计算几何中,向量点积是一种十分重要的运算。 给定两个 n 维向量 a=(a1,a2,...,an)和 b=(b1,b2,...,bn),求点积 a·b=a1b1+a2b2+...+anbn。 输入 第一行是一个整数 n。1 <= n <= 1000。 第二行包含 n 个整数 a1,a2,...,an。 第三行包含 n 个整数 b1,b2,...,bn。 相邻整数之间用单个空格隔开。每个整数的绝对值都不超过 1000。 输出 一个整数,即两个向量的点积结果。 样例输入 3 1 4 6 2 1 5 样例输出 36 #include <bits/stdc++.h> using namespace std; int main()
inta1000]: int b[1000]; int sum=0; int n; cin>>n; int i; for(i=0;i<n;i++) cin>>ali]; } for(i=0:i<n:i++) cin>>b[i]; } for(i=0;i<n;i++) { sum sum +afi]*b[i]; } cout <<sum 8 1.5--10求两个大的非负整数的和。 描述 求两个不超过200位的非负整数的和。 输入 有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。 输出 一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能 输出为0342。 样例输入 22222222222222222222 33333333333333333333 样例输出 55555555555555555555
{ int a[1000]; int b[1000]; int sum = 0; int n; cin >> n; int i; for(i = 0; i < n ;i ++) { cin >> a[i]; } for(i = 0; i < n ;i ++) { cin >> b[i]; } for(i = 0 ; i < n ; i++) { sum = sum + a[i]*b[i]; } cout <<sum ; } 8 1.5---10 求两个大的非负整数的和。 描述 求两个不超过 200 位的非负整数的和。 输入 有两行,每行是一个不超过 200 位的非负整数,可能有多余的前导 0。 输出 一行,即相加后的结果。结果里不能有多余的前导 0,即如果结果是 342,那么就不能 输出为 0342。 样例输入 22222222222222222222 33333333333333333333 样例输出 55555555555555555555
9 1.5--12求2的n次方(n100) 描述 任意给定一个正整数NN<=100),计算2的n次方的值。 输入 输入一个正整数N。 输出 输出2的N次方的值。 样例输入 5 样例输出 32 10约瑟夫环 有一群猴子, 依次编号为1,2,3.m,这群猴子(m个)按照1到m的顺序围坐成一圈。现在从编号 为1的猴子开始数,每数到第个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下 最后一只猴子,则该猴子为大王。 (1)输入整数m和n,要求n<m。 (2)输出选出的猴子大王的编号。 参考代码: #include<bits/stdc+.h>∥C+的万能头文件 using namespace std; int main() { inta601]={0: int n; int cnt =0: cin >>n; int i,i=0: for(i=0;i<n;i++) a的=i+l; } for(i=0;;i++) { if(cnt==n-1)
9 1.5---12 求 2 的 n 次方(n<=100) 描述 任意给定一个正整数 N(N<=100),计算 2 的 n 次方的值。 输入 输入一个正整数 N。 输出 输出 2 的 N 次方的值。 样例输入 5 样例输出 32 10 约瑟夫环 有一群猴子, 依次编号为 1,2,3 ...m,这群猴子(m 个)按照 1 到 m 的顺序围坐成一圈。现在从编号 为 1 的猴子开始数,每数到第 n 个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下 最后一只猴子,则该猴子为大王。 (1)输入整数 m 和 n,要求 n<m。 (2)输出选出的猴子大王的编号。 参考代码: #include <bits/stdc++.h> //C++的万能头文件 using namespace std; int main() { int a[601] = {0}; int n; int cnt = 0; cin >>n; int i, j = 0; for( i = 0; i < n ; i ++) { a[i] = i+1; } for(i = 0; ; i ++) { if(cnt == n-1)