Concatenated Multiples(串联倍数)
Step1 Problem:
n 个数 和 k,n 个数 分别 a[1] … a[n].
连接两个数如:
connection(x, y) = xy.
connection(45, 112) = 45112.
让你求 connection(a[i], a[j])%k == 0 的个数 (i != j)
数据范围:
1 <= n <= 2e5,
2 <= k <= 1e9,
1 <= a[i] <= 1e9.
Examples
Input
6 11
45 1 10 12 11 7
Output
7
Input
4 2
2 78 4 10
Output
12
Input
5 2
3 7 19 3 3
Output
0
connection(45, 112) = 45112.
45112 = 451000+112;
(a[i]%kmul%k + a[j]%k)%k == 0
时间复杂度 O(n10log(1e9));
代码实现:
//时间复杂度为O(n).#include<iostream>
#include<map>
#define maxn 200020
using namespace std;
int a[maxn],b[11],c[maxn];
map<int,int>m[11];
int main()
{int n,k,i,j,t;cin>>n>>k;b[0]=1;for(i=1;i<11;i++)b[i]=(b[i-1]*10)%k;for(i=0;i<n;i++){cin>>a[i];t=a[i];c[i]=0;while(t!=0){t=t/10;c[i]++;}a[i]=a[i]%k;for(j=1;j<11;j++)m[j][(long long)a[i]*b[j]%k]++;}long long re=0;for(i=0;i<n;i++){re+=m[c[i]][(k-a[i])%k];if(a[i]==0)re--;if((long long)a[i]*b[c[i]]%k==k-a[i])re--;}cout<<re<<endl;
}
超时代码:
//时间复杂度为O(n*n).#include <iostream>
#define maxn 200020
using namespace std;
int a[3][maxn];
int digit(int n)
{int t=1;while(n!=0){n=n/10;t=t*10;}return t;
}
int main()
{int n,k,i,j;cin>>n>>k;for(i=0; i<n; i++){cin>>a[0][i];a[1][i]=a[0][i]%k;a[2][i]=digit(a[0][i]);}long long re=0;for(i=0; i<n; i++){for(j=0; j<n; j++){if(j==i)continue;if((a[1][i]*(a[2][j]%k)+a[1][j])%k==0)re++;}}cout<<re<<endl;return 0;
}
知识补充:
精确到毫秒时间:
#include<stdio.h>
#include <stdlib.h>//用到rand()函数
#include<time.h> //用到clock()函数
int main() {int begintime,endtime;int i = 0;int a[1002];begintime=clock(); //计时开始for( i = 1; i <= 1000; i++){//要计时的程序a[i] = rand()%200-100;//产生-100到+100之间的随机数printf(" %d",a[i]);}endtime = clock(); //计时结束printf("\n\nRunning Time:%dms\n", endtime-begintime);return 0;
}
Concatenated Multiples(串联倍数)相关推荐
- Codeforces Round #506 (Div. 3) - D. Concatenated Multiples(思维)
题目链接 题意 给你N个数字和一个K,问一共有几种拼接数字的方式使得到的数字是K的倍数,拼接:"234"和"123"拼接得到"234123" ...
- Codeforces Round #506 (Div. 3)题解
妈个蛋,被新手场教做人 不多说进正文 A. Many Equal Substrings time limit per test 1 second memory limit per test 256 m ...
- 【图像分类--图片数据扩充】图片数据不够怎么凑
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能教程 在训练神经网络的过 ...
- OI每周刷题记录——lrllrl
看这标题就知道我是模仿的hzwer大佬,远程%%% 大佬的OI经历让蒟蒻我深受感触,为了晚一些AFO本蒟蒻也得加油了 从高二上期第一周开始计数,每个星期天更一次,一直更到我AFO 如果这是我此生最后一 ...
- leetcode 1239. Maximum Length of a Concatenated String with Unique Characters | 1239. 串联字符串的最大长度(回溯)
题目 https://leetcode.com/problems/contiguous-array/ 题解 回溯法,每个字符串都有可能加或者不加. class Solution {int N;publ ...
- matlab根轨迹法串联超前校正,4.7基于根轨迹法的串联超前校正.ppt
4.7基于根轨迹法的串联超前校正.ppt * * 4.7 基于根轨迹法的串联超前校正 系统的动态指标设计要求 在根轨迹上标定闭环极点的位置 求出闭环极点处相应的参数 值 求出开环放大倍数 根据闭环极点 ...
- 电压放大倍数公式运放_运放电路:同相放大还是反相放大?
电子电路中的运算放大器,有同相输入端和反相输入端,输入端的极性和输出端是同一极性的就是同相放大器,而输入端的极性和输出端相反极性的则称为反相放大器. 图一运放的同向端接地=0V,反向端和同向端虚短,所 ...
- 【算法题】Multiples of 3 and 5
Multiples of 3 and 5 原题 题意如下: 找出N以内的3和5的倍数的和. 思路 1.刚看到觉得好弱智,直接遍历一遍不就OK了吗?但是第2和第3个测试用例报了TLE,超时. 2.然后想 ...
- 电路串联和并联图解_负反馈型三极管放大电路的识图方法
1.反馈电路与构成 将放大器的一部分输出量(电压或电流)送回输入端的过程就是反馈,而传送反馈量的电路就是反馈电路.典型的反馈电路构成如图3-8所示. 图3-8 反馈电路构成方框图 若反馈量与输入量的相 ...
- Problem 1: Multiples of 3 and 5
小白一枚,python解法,共同学习,一起进步. Problem 1: Multiples of 3 and 5 If we list all the natural numbers below 10 ...
最新文章
- ubuntu16.04 安装 eclipse
- 望城——民营经济的“旺城”
- k8s Service之Headless Service
- [Redis6]配置文件详解
- Spark SQL(九)之基于用户的推荐公式
- iOS--viewController
- yum方式安装android_linux yum 命令 详解
- 2021年Q2小米手机销量超苹果跻身全球第二 雷军:新的里程碑
- AttributeError: type object 'h5py.h5.H5PYConfig' has no attribute '__reduce_
- PyQt5:入门使用教程
- Python爬虫实战01 ---- 百度贴吧一键签到
- 如何关闭谷歌浏览器Google Chrome的阅读清单功能
- Lua 实现复数计算器
- 扔掉代码,程序员月薪达到了10k+
- html5禁止显示相册,手机相册图片莫名被屏蔽,显示“涉嫌违规,系统审查中”半年了...
- Java web项目如何在服务器上跑起来(有源码)
- 计算机二级的简单项目,2016年计算机二级考试VB简单综合应用题冲刺
- 语音对话控制智能家居系统
- python的歌曲评论数据分析_用Python分析44万条数据,揭秘如何成为网易云音乐评论区的网红段子手...
- 山东大学软件学院2019web数据管理