14年安徽省赛数论题etc.
关于最大公约数的疑惑
题目描述
小光是个十分喜欢素数的人,有一天他在学习最大公约数的时候突然想到了一个问题,他想知道从1到n这n个整数中有多少对最大公约数为素数的(x,y),即有多少(x,y),gcd(x,y)=素数,1<=x,y<=n。但是小光刚刚接触最大公约数,不能解决这个问题,于是他希望你能帮助他解决这个问题。
输入
多组测试数据,对于每组数据:
每行为一个整数N (1<=N<=10^5)
输出
对于每组数据:
每行输出 (x,y)的个数
样例输入
样例输出
直接筛法求素数+欧拉函数。在筛法求素数的时候顺便给每个数*(1-1/pi)其中pi为该数的质因子。
#include<cstdio>
#include<iostream>
#include<cstring>
#define clr(x) memset(x,0,sizeof(x))
using namespace std; int a[];
int ct[];
int pr[];
void prime(int n);
int main()
{
int n,m,i,j,sum;
prime();
while(scanf("%d",&n)==)
{
sum=;
for(i=;pr[i]<=n;i++)
{
j=n/pr[i];
sum+=ct[j];
}
printf("%d\n",sum*+i-);
} }
void prime(int n)
{
clr(a);
clr(pr);
int num=;
a[]=a[]=;
for(int i=;i<=n;i++)
ct[i]=i;
ct[]=;
for(int i=;i<=n;i++)
if(!a[i])
{
for(int j=i;j<=n;j+=i)
{
a[j]=;
ct[j]=ct[j]/i*(i-);
}
pr[++num]=i;
}
for(int i=;i<=n;i++)
ct[i]+=ct[i-];
pr[]=num;
return ;
}
一道简单的几何变换
题目描述
小光最近在学习几何变换,老师给他留了一个作业,在二维平面上有n个点(x,y),老师给了m个几何变换对n个点进行操作,要求小光输出变换后的n个点的坐标(x’,y’)。小光为了偷懒,请求你帮他写个程序来完成老师的作业。
由于小光刚刚学习几何变换,老师只会给出四种变换,如下:
平移变换: (x’,y’)=(x+p,y’+q) 程序的输入格式为:1 p q (p,q为整数)
缩放变换: (x’,y’)=(x*L,y*L) 程序的输入格式为:2 L (L为整数)
上下翻转: (x’,y’)=(x,-y) 程序的输入格式为:3
左右翻转: (x’,y’)=(-x,y) 程序的输入格式为:4
输入
多组测试数据,对于每组数据:
第一行为N(1<=N<=10^5)
然后以下N行,N个点(x,y) 其中x,y均为整数
然后一行为M (1<=M<=10^5)
然后以下M行,M个变换,输入格式如上所述。
输出
对于每组数据:
输出N行,每行为变换点坐标。
样例输入
样例输出
这题也没什么好说的。。其实算不上数论,只是顶着变换的名头= =。然后呢一看数据量如果分别一个一个处理一定会超时。于是就想到了把所有的处理化为一次处理。
#include<cstdio>
#include<iostream>
using namespace std;
struct pos{
int x,y;
}a[];
int main()
{
int ctx,cty,acumx,acumy;
int n,m,k,l,t,p,q;
while(scanf("%d",&n)==)
{
for(int i=;i<=n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
scanf("%d",&m);
ctx=cty=l=;
acumx=acumy=;
for(int i=;i<=m;i++)
{
scanf("%d",&k);
if(k==)
{
scanf("%d%d",&p,&q);
acumx+=ctx*p;
acumy+=cty*q;
}
if(k==)
{
scanf("%d",&t);
l*=t;
acumx*=t;
acumy*=t;
}
if(k==)
cty=-cty;
if(k==)
ctx=-ctx;
}
for(int i=;i<=n;i++)
{
a[i].x=a[i].x*l*ctx+acumx*ctx;
a[i].y=a[i].y*l*cty+acumy*cty;
printf("%d %d\n",a[i].x,a[i].y);
}
}
return ;
}
14年安徽省赛数论题etc.的更多相关文章
- BZOJ 3209: 花神的数论题 [数位DP]
3209: 花神的数论题 题意:求\(1到n\le 10^{15}\)二进制1的个数的乘积,取模1e7+7 二进制最多50位,我们统计每种1的个数的数的个数,快速幂再乘起来就行了 裸数位DP..\(f ...
- FJUT-这还是一道数论题
这还是一道数论题 TimeLimit:4000MS MemoryLimit:128MB 64-bit integer IO format:%lld Special Judge Problem D ...
- 【洛谷】4317:花神的数论题【数位DP】
P4317 花神的数论题 题目背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦. 题目描述 话说花神这天又来讲课了.课后照例有超级难的神题啦…… 我 ...
- 【LG4317】花神的数论题
[LG4317]花神的数论题 题面 洛谷 题解 设\(f_{i,up,tmp,d}\)表示当前在第\(i\)位,是否卡上界,有\(tmp\)个一,目标是几个一的方案数 最后将所有\(d\)固定,套数位 ...
- BZOJ3209 花神的数论题 【组合数学+数位DP+快速幂】*
BZOJ3209 花神的数论题 Description 背景 众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦. 描述 话说花神这天又来讲课了.课后照例有 ...
- [BZOJ3209]花神的数论题 组合数+快速幂
3209: 花神的数论题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2498 Solved: 1129[Submit][Status][Disc ...
- 【BZOJ3209】花神的数论题 数位DP
[BZOJ3209]花神的数论题 Description 背景众所周知,花神多年来凭借无边的神力狂虐各大 OJ.OI.CF.TC …… 当然也包括 CH 啦.描述话说花神这天又来讲课了.课后照例有超级 ...
- 【bzoj3209】: 花神的数论题 数论-DP
[bzoj3209]: 花神的数论题 首先二进制数中1的个数最多就是64个 设所有<=n的数里二进制中1的个数为i的有a[i]个 那么答案就是 然后快速幂 求a[i]可以用DP 设在二进制中从 ...
- bzoj3209:3209: 花神的数论题
觉得还是数位dp的那种解题形式但是没有认真的想,一下子就看题解.其实还是设置状态转移.一定要多思考啊f[i][j]=f[i-1][j]+g[i-1][j] g[i][j]=f[i-1][j-1]+g[ ...
随机推荐
- ios资源加载策略
做了好几个月的ios,大框架都是别人搭好的,自己只是实现逻辑,很是失落.慢慢开始整理学习一些概念类的东西吧,希望自己能提高点. cocos2d-x从cocos2d-2.0-x-2.0.2开始,考虑到自 ...
- Morley's Theorem (计算几何基础+向量点积、叉积、旋转、夹角等+两直线的交点)
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- POJ 3069 Saruman's Army (模拟)
题目连接 Description Saruman the White must lead his army along a straight path from Isengard to Helm's ...
- Android控件——监听按钮的点击事件
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAroAAAFTCAIAAABZPDiZAAAgAElEQVR4nOy9918UWfb///1jdu2uBs
- 【转】jpg文件格式详解
JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写.它由国际电话与电报咨询委员会CCITT(The International Telegraph ...
- Python3 学习第一天总结
一.python介绍 1.python是一门动态解释性的强类型定义语言: 简单解释一下: 定义变量不需要定义类型的为动态语言:典型的有Python和Ruby,反之定义变量需要定义类型的为静态语言:典型 ...
- 448D - Codeforces
D. Multiplication Table time limit per test 1 second memory limit per test 256 megabytes Bizon the C ...
- nvidia tk1使用记录--基本环境搭建
前言 项目最开始是在X86+Nvidia(ubuntu+opencv+cuda)平台上实现,达到了期望性能,最近考虑将其移植到嵌入式平台,特别是最近nvidia出了tegra X1,基于和我们使用的g ...
- appium===使用weditor代替ui automator viewer
weditor 一个元素定位工具,并可实现通过wifi连接移动端进行定位. https://github.com/openatx/uiautomator2 python安装方式: pip instal ...
- Development tools[重点]
Development tools yum groupinfo "Development tools" Loaded plugins: product-id, security, ...