洛谷题单 【数学】编程能力进阶

洛谷题单 【数学】编程能力进阶


P1075 质因数分解

洛谷题单 【数学】编程能力进阶

  • PZ's solution:

    **1. **\(n\)的大小不支持我们直接枚举,考虑从较小的质数开始入手;

    **2. **考虑最坏可能近似为\(\sqrt{n}*\sqrt{n}\),则最大 较小的质数近似为$ \sqrt{n} $ ;

    **3. **设较小质数的值为\(i\),则 \(ans=n/i\)

  • TAG:数学;质数

P1075.cpp

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n;
int main(){
	scanf("%d",&n);
	for(int i=2;i<=sqrt(n);++i)
		if(n%i==0){
			printf("%d",n/i);
			return 0;
		}
}

P1888 三角函数

洛谷题单 【数学】编程能力进阶

  • PZ's solution:

    要求约分即为 求其最大公约数

  • TAG:数学;GCD最大公约数

P1888.cpp

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[4],x;
int gcd(int x,int y){ return y==0 ? x : gcd(y,x%y); }
int main(){
	for(int i=1;i<=3;++i) scanf("%d",&a[i]);
	sort(a+1,a+1+3);
	x=gcd(a[1],a[3]);
	printf("%d/%d",a[1]/x,a[3]/x);
	return 0;
}

P6159 [Cnoi2020]光图

洛谷题单 【数学】编程能力进阶

  • PZ's solution:

    1.观察规律,发现\(A_0\)与\(A_p\)之间 间隔\(p\)个点,而 第二次反射后 的\(A_t\)与\(A_p\)之间 也间隔\(p\)个点;

    2.获得此规律后,我们可以得到\(O(1)\)公式,即\(A_t=p*k \% n\)

  • TAG:数学;模拟

P6159

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define int long long
int n,p,k;
signed main(){
	scanf("%lld %lld %lld",&n,&p,&k);
	printf("%lld",p*k%n);
	return 0;
}
  • 后记

    这就是传说中的十二芒星图吗(っ °Д °;)っ?!

洛谷题单 【数学】编程能力进阶


P2640 神秘磁石

洛谷题单 【数学】编程能力进阶

  • TAG:模拟;质数;欧拉线性筛质数

    按照题意模拟就好了是( •̀ .̫ •́ )✧

P2640.cpp

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
int n,p[10010],k;
bool vis[10010],flog;
void getprime(){
	for(int i=2;i<=n;++i){
		if(!vis[i]) p[++p[0]]=i;
		for(int j=1;j<=p[0]&&i*p[j]<=n;++j){
			vis[i*p[j]]=1;
			if(i%p[j]==0) break;
		}
	}
}
int main(){
	scanf("%d %d",&n,&k);
	getprime();
	for(int i=1;i<=p[0]&&p[i]+k<=n;++i){
		if(!vis[p[i]+k]){
			flog=1;
			printf("%d %d\n",p[i],p[i]+k);
		}
	}
	if(!flog) printf("empty");
	return 0;
}

P5436 【XR-2】缘分

未完待续

上一篇:BZOJ-3834 [Poi2014]Solar Panels(数论分块)


下一篇:CSP-S 2020 题解