CodeCraft-20 (Div. 2) C. Primitive Primes(高斯引理)

http://codeforces.com/contest/1316/problem/C

高斯引理,听都没听过,怎么可能写出来。。。无限挖5

需要一个快速读入,数组需要从0开始。

#include <iostream>
#include<bitset>
#include <algorithm>
#include <cmath>
#include <ctype.h>
#include <cstring>
#include <cstdio>
#include <set>
#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include<iomanip>
#define SIS std::ios::sync_with_stdio(false)
#define ll long long
#define INF 0x3f3f3f3f
const int mod = 1e9 + 7;
const double esp = 1e-5;
const double PI = 3.141592653589793238462643383279;
using namespace std;
const int N = 1e7 + 5;
const int maxn = 1 << 20;
ll powmod(ll a, ll b) { ll res = 1; a %= mod; while (b >= 0); for (; b; b >>= 1) { if (b & 1)res = res * a % mod; a = a * a % mod; }return res; }
ll gcd(ll a, ll b) { return b ? gcd(b, a % b) : a; }
/*void chafen(int l, int r, int k) {//差分函数
	p[l] += k;
	p[r + 1] -= k;
}*/
ll fastMul(ll a, ll b, ll p) {//快速乘
	a %= p;
	ll ans2 = 0;
	while (b > 0) {
		if (b & 1)
			ans2 = (ans2 + a) % p;
		b >>= 1;
		a = (a + a) % p;
	}
	return ans2;
}
ll modMul(ll a, ll b, ll p)//极限快速乘
{
	if (p <= 1000000000)
		return a * b % p;
	else if (p <= 000000000000ll)
		return (((a * (b >> 20) % p) << 20) + (a * (b & ((1 << 20) - 1)))) % p;
	else {
		ll d = (ll)floor(a * (long double)b / p + 0.5);
		ll ret = (a * b - d * p) % p;
		if (ret < 0) ret += p;
		return ret;
	}
}
inline int read() {//快速读入
	int s = 0, w = 1; char ch = getchar();
	while (ch < '0' || ch > '9') { if (ch == '-') w = -1; ch = getchar(); }
	while (ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar();
	return s * w;
}
/*************************************************************/
int a[N], b[N];
int main() {
	int n, m, p;
	n = read(), m = read(), p = read();
	for (int i = 0; i < n; i++)
		a[i] = read();
	for (int i = 0; i < m; i++)
		b[i] = read();
	int sign1, sign2;
	for (int i = 0; i < n; i++)
		if (a[i] % p != 0)
			sign1 = i;
	for (int i = 0; i < m; i++)
		if (b[i] % p != 0)
			sign2 = i;
	cout << sign1+sign2 << endl;
	return 0;
}
/*

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

deebcjrb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值