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[ ...
随机推荐
- 【BZOJ】1610: [Usaco2008 Feb]Line连线游戏
[算法]计算几何 [题解]计算所有斜率排序去重. 实数判断相等用fabs(...)≤eps. ★斜率题一定要注意斜率不存在的情况!!! 其实我觉得这份代码可以hack的…… #include<c ...
- 继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建.
继承自UITableView的类自带tableView属性,不需要在创建该属性,因为父类UITableView已经创建. https://www.evernote.com/shard/s227 ...
- linux下pthread_cancel无法取消线程的原因【转】
转自:http://blog.csdn.net/huangshanchun/article/details/47420961 版权声明:欢迎转载,如有不足之处,恳请斧正. 一个线程可以调用pthrea ...
- 【Android XML】Android XML 转 Java Code 系列之 Selector(2)
今天我们要把drawable下的selector的XML文件转换成Java代码.(打包进jar,不依赖apk) 在转换工具中的代码为: https://github.com/SickWorm/Andr ...
- 【设计模式】原型模式(Prototype)
摘要: 1.本文将详细介绍原型模式的原理和实际代码中特别是Android系统代码中的应用. 纲要: 1. 引入原型模式 2. 原型模式的概念及优缺点介绍 3. 原型模式对拷贝的使用 4. 原型模式在A ...
- delphi2006语言新特性:Record类型高级用法
delphi语言在传统的Records类型的基础上增加了许多像类一样的高级功能,如:Records可以有属性和方法(包括构造constructors),类属性,类方法,类静态字段和内嵌类型.下面这个示 ...
- BZOJ 3656: 异或 (组合数取模 CRT)
http://www.lydsy.com/JudgeOnline/problem.php?id=3656 大意:经过一通推导,问题变成求\[\binom N M \mod P\],其中N,M<= ...
- TensorFlow计算模型—计算图
TensorFlow是一个通过计算图的形式来表述计算的编程系统.其中的Tnesor,代表它的数据结构,而Flow代表它的计算模型.TensorFlow中的每一个计算都是计算图上的一个节点,而节点之间的 ...
- JS常用操作方法
1.splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组. 1 <script type="text/javascript"& ...
- socket实现udp与tcp通信-java
1.简单介绍Socket Socket套接字 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字. 通信的两端都有Socket. 网络通信其实就是Socket间的通信. 数 ...