CCF CSP认证 题解:201709-5 除法(Java语言原创)
2018-03-25 11:22
232 查看
问题描述 小葱喜欢除法,所以他给了你N个数a1, a2, ⋯, aN,并且希望你执行M次操作,每次操作可能有以下两种:
给你三个数l, r, v,你需要将al, al+1, ⋯, ar之间所有v的倍数除以v。
给你两个数l, r,你需要回答al + al+1 + ⋯ + ar的值是多少。输入格式 第一行两个整数N, M,代表数的个数和操作的次数。
接下来一行N个整数,代表N个数一开始的值。
接下来M行,每行代表依次操作。每行开始有一个整数opt。如果opt=1,那么接下来有三个数l, r, v,代表这次操作需要将第l个数到第r个数中v的倍数除以v;如果opt = 2,那么接下来有两个数l, r,代表你需要回答第l个数到第r个数的和。输出格式 对于每一次的第二种操作,输出一行代表这次操作所询问的值。样例输入5 3
1 2 3 4 5
2 1 5
1 1 3 2
2 1 5样例输出15
14
这题用java很轻松AC,除了要加if(b3==1)continue;之类的小优化外没用到啥就蜜汁AC了。但是用c++的话要用数状数组之类的数据结构,应对大量的增删操作,才能不超时。
import java.util.*;public class Main{ public static void main(String args[]){ Scanner in=new Scanner(System.in); int i,n=in.nextInt(); int m=in.nextInt(); int a[]=new int
; for(i=0;i<n;i++){ a[i]=in.nextInt(); }
int a1,b1,b2,b3; long sum; for(i=0;i<m;i++){ a1=in.nextInt(); if(a1==1){ b1=in.nextInt(); b2=in.nextInt(); b3=in.nextInt(); if(b3==1)continue; for(int j=b1-1;j<=b2-1;j++) if(a[j]>=b3&&a[j]%b3==0) a[j]=a[j]/b3; }else if(a1==2){ b1=in.nextInt(); b2=in.nextInt(); sum=0; for(int j=b1-1;j<=b2-1;j++) sum+=a[j]; System.out.println(sum); } } in.close(); }}
给你三个数l, r, v,你需要将al, al+1, ⋯, ar之间所有v的倍数除以v。
给你两个数l, r,你需要回答al + al+1 + ⋯ + ar的值是多少。输入格式 第一行两个整数N, M,代表数的个数和操作的次数。
接下来一行N个整数,代表N个数一开始的值。
接下来M行,每行代表依次操作。每行开始有一个整数opt。如果opt=1,那么接下来有三个数l, r, v,代表这次操作需要将第l个数到第r个数中v的倍数除以v;如果opt = 2,那么接下来有两个数l, r,代表你需要回答第l个数到第r个数的和。输出格式 对于每一次的第二种操作,输出一行代表这次操作所询问的值。样例输入5 3
1 2 3 4 5
2 1 5
1 1 3 2
2 1 5样例输出15
14
这题用java很轻松AC,除了要加if(b3==1)continue;之类的小优化外没用到啥就蜜汁AC了。但是用c++的话要用数状数组之类的数据结构,应对大量的增删操作,才能不超时。
import java.util.*;public class Main{ public static void main(String args[]){ Scanner in=new Scanner(System.in); int i,n=in.nextInt(); int m=in.nextInt(); int a[]=new int
; for(i=0;i<n;i++){ a[i]=in.nextInt(); }
int a1,b1,b2,b3; long sum; for(i=0;i<m;i++){ a1=in.nextInt(); if(a1==1){ b1=in.nextInt(); b2=in.nextInt(); b3=in.nextInt(); if(b3==1)continue; for(int j=b1-1;j<=b2-1;j++) if(a[j]>=b3&&a[j]%b3==0) a[j]=a[j]/b3; }else if(a1==2){ b1=in.nextInt(); b2=in.nextInt(); sum=0; for(int j=b1-1;j<=b2-1;j++) sum+=a[j]; System.out.println(sum); } } in.close(); }}
相关文章推荐
- CCF CSP认证 题解:201709-2 公共钥匙盒(Java语言原创)
- CCF CSP认证 题解:201709-4 通信网络 DFS(Java语言原创)
- CCF CSP认证 题解:201412-2 Z字形扫描(Java语言原创)
- CCF CSP认证 题解:201403-2 窗口(Java语言原创)
- CCF CSP认证 题解:201412-4 最优灌溉 Kruskal最小生成树+并查集(Java语言原创)
- CCF CSP认证 题解:201403-3 命令行选项(Java语言原创)
- CCF CSP认证 题解:201604-2 俄罗斯方块(Java语言原创)
- CCF CSP认证 题解:201703-2 学生排队(Java语言原创)
- CCF CSP认证 题解:201703-3 Markdown(Java语言原创)
- CCF CSP 公共钥匙盒 JAVA 201709-2 100分
- CCF CSP 201709-2 公共钥匙盒(Java-100分)
- ccf 201709-5 除法 java
- CCF CSP 认证 201612-2 工资计算 java版
- CCF CSP 201709-1 打酱油(Java-100分)
- CCF 201709-5 除法 Java
- CCF CSP试题题解:201709-2 公共钥匙盒
- [ACM]CCF CSP [201709-5]E题 除法
- CCF CSP认证 201512-2 消除类游戏 java版 70分,求助!
- ccf csp认证中间数java代码
- CCF-CSP 通信网络 JAVA 201709-4 100分