当前位置: 首页 > news >正文

整数拼接(参照acwing的yxc)

整数拼接

给定一个长度为 n 的数组 A1,A2,⋅⋅⋅,An。

你可以从中选出两个数 Ai 和 Aj(i 不等于 j),然后将 Ai 和 Aj 一前一后拼成一个新的整数。

例如 12 和 345 可以拼成 12345 或 34512。

注意交换 Ai 和 Aj 的顺序总是被视为 2 种拼法,即便是 Ai=Aj 时。

请你计算有多少种拼法满足拼出的整数是 K 的倍数。

输入格式

第一行包含 2 个整数 n 和 K。

第二行包含 n 个整数 A1,A2,⋅⋅⋅,An。

输出格式

一个整数代表答案。

数据范围

1≤n≤105,
1≤K≤105,
1≤Ai≤109

输入样例:
4 2 1 2 3 4
输出样例:
6

代码1:(超时)

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; public class Main { static int N=100010; static long a[]=new long[N]; // static int res[]=new int[N]; //qq public static void main(String []args) throws IOException{ //System.out.println(1); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //int n=Integer.parseInt(br.readLine()); String g[]=br.readLine().split(" "); int n=Integer.parseInt(g[0]),k=Integer.parseInt(g[1]); g=br.readLine().split(" "); for (int i = 0; i < n; i++) { a[i]=Long.parseLong(g[i]); } int res=0; for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { long a1=a[i],a2=a[j]; BigInteger b1=new BigInteger(a1+""+a2),b2=new BigInteger(a2+""+a1); if(b1.mod(BigInteger.valueOf(k)).equals(BigInteger.ZERO)){ res++; } if(b2.mod(BigInteger.valueOf(k)).equals(BigInteger.ZERO)){ res++; } } } System.out.println(res); } }

代码2:

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static int N=100010; static int a[]=new int[N]; static int s[][]=new int[11][N]; //qq public static void main(String []args) throws IOException{ //System.out.println(1); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //int n=Integer.parseInt(br.readLine()); String g[]=br.readLine().split(" "); int n=Integer.parseInt(g[0]),k=Integer.parseInt(g[1]); g=br.readLine().split(" "); for (int i = 0; i < n; i++) { a[i]=Integer.parseInt(g[i]); } //(A × 10^lenB + B) mod k = 0等价于: (A × 10^lenB) mod k = (-B) mod k //等价于: (A × 10^lenB) mod k = (k-B) mod k //开一个哈希表 第k个哈希表表示 aj*10^k %k 等于对应值 的个数 k为b的位数 //这样当b固定到时候 只需要去len(b)的哈希表里去找需要的余数就可以了 for (int i = 0; i < n; i++) { int t=a[i]%k; for (int j = 0; j < 11; j++) { s[j][t]++; t=t*10%k; } } long res=0; for (int i = 0; i < n; i++) {//当固定一个b int t=a[i]%k; int len= (a[i]+ "").length(); res+=s[len][(k-t)%k]; //但是也有可能是自己拼自己 算一下是不是 是的话减去1 int r=t; while(len>0){ r=r*10%k; len--; } if(r==(k-t)%k)res--; } System.out.println(res); } }
http://www.cnnetsun.cn/news/1757589.html

相关文章:

  • 从零开始:使用SDKManager为Jetson Xavier NX刷机(含JetPack 4.6配置)
  • 个人博客上线必备:从ICP备案到公安备案的全流程保姆级教程(2024最新)
  • 别再乱调接口了!企微自建应用获取成员手机号、邮箱的最新正确姿势(2023年8月后)
  • Filter Solutions保姆级教程:从幅频响应调试到MATLAB联合仿真
  • XGBoost特征重要性全解析:weight/gain/cover三种计算方式有什么区别?
  • 鸿蒙HarmonyOS无线调试实战:摆脱数据线束缚的DS配置指南
  • 保姆级教程:用DBeaver 23.3连接人大金仓KingbaseES V8R3,附驱动下载与常见连接失败排查
  • 6.s081 Lab:从零构建一个简易的xv6 Shell
  • Ansys Q3D电容提取实战:从平行板到MEMS芯片的完整流程(附避坑指南)
  • 用好AI大纲,让写作思路更清晰
  • OpenClaw多模型切换指南:Gemma-3-12b-it与Qwen混合调用策略
  • 别再踩坑了!Windows 10/11下用VS2019/2022搞定ONNX转NCNN的保姆级教程
  • Qwen3-Reranker-0.6B部署教程:Airflow定时任务触发批量文档重排序Pipeline
  • WeChatExporter:微信聊天记录备份与导出完全指南
  • OpenClaw性能测试:Kimi-VL-A3B-Thinking并发请求处理能力
  • Qwen-Image-Edit-2511-Unblur-Upscale使用全攻略:从部署到出图
  • ComfyUI-Impact-Pack架构重构:从单体插件到模块化生态系统的演进
  • GME-Qwen2-VL-2B-Instruct与数据库课程设计:构建智能相册管理系统
  • Typora与AI绘画的文档工作流:用Markdown管理忍者像素绘卷创作笔记
  • 避坑指南:RobotStudio路径仿真时常见的5个报错及解决方法
  • kdmapper 性能优化技巧:提升驱动映射效率的7个关键策略
  • 从TensorFlow到C++:手把手教你用ONNXRuntime-GPU 1.14.1部署图像分割模型(附完整代码)
  • 告别GIS软件!用R语言ggplot+ggmapcn制作出版级世界地图(附投影参数详解)
  • Zotero Reference自定义配置指南:个性化设置与优化技巧
  • 【日常运维】frp反向代理服务部署手册
  • 3步解决Visual C++运行库缺失难题:从根源修复到长效防护
  • Adobe-GenP 3.0终极指南:5分钟解锁Adobe全家桶所有功能
  • FPGA UART设计避坑指南:状态机、FIFO与跨时钟域的那些事儿
  • 如何判断GEO优化哪家好?2026年4月推荐评测口碑对比知名七家
  • Neat Bookmarks:5步实现颠覆式书签管理,让浏览器效率提升300%