这两道题还是比较简单的,没有什么难度

不过归在数论这个专题里我还是比较认同的,多少有些关系

3292

题目大意:给你一个范围n,让你求出这个范围内所有形式类似\(4k+1(k为正整数)\)的数中的H-semi-primes的个数

所谓H-semi-primes,就是在一个由两个H-primes相乘得到的数。其中H-primes就是在这些数范围内的素数。什么意思?就是在所有的形式如上的数中不能由其它这种形式的数相乘得到的。

例如,9就是一个H-primes,虽然它在自然数范围内并不是素数。但是由于在这些形式的数中并没有它的真因数,因此它就是H-primes。

所以我们只需要用一种类似于筛法的东西筛去所有非H-primes,然后就可以得出所有的H-semi-primes。然后累加打表即可

具体看CODE

#include<cstdio>
using namespace std;
const int N=1000005;
int ans[N],n;
bool vis[N];
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{
x=0; char ch=tc();
while (ch<'0'||ch>'9') ch=tc();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
}
inline void write(int x)
{
if (x/10) write(x/10);
putchar(x%10+'0');
}
inline void init(int n)
{
register int i,j; int tot=0;
for (i=5;i<n;i+=4)
for (j=5;j<n;j+=4)
{
int m=i*j; if (m>n) break;
if (!ans[i]&&!ans[j]) ans[m]=1; else ans[m]=-1;
}
for (i=1;i<=n;++i)
{
if (!(ans[i]^1)) ++tot;
ans[i]=tot;
}
}
int main()
{
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
register int i,j; init(N);
for (;;)
{
read(n); if (!n) break;
write(n); putchar(' '); write(ans[n]); putchar('\n');
}
return 0;
}

2115

这还是一道比较入门的扩欧水题

题目大意:有一个循环形式如题目所说,然后问它在无符号整数(位数为k)的情况下运行的情况。

如果是死循环就输出"FOREVER",否则输出循环步数

这还是很简单的,我们先对题意进行简化。首先我们知道这样的运行越界后其实是自动模\(2^k\) 的,然后我们可以得出方程,其中我们设要操作的次数为\(x\),那么我们要的结果就是\(x\)的最小非负整数解

\((A+Cx) \equiv B (mod\ 2^k)\)

然后我们对于这个同余方程可以通过经典的方法来扩欧求解

我们通过\(mod\)的性质可以知道,设\(mod\)操作减去了\(2^ky\)次,即有新的不定方程

\(A+Cx-2^ky=B\)

移项后为:

\(Cx-2^ky=B-A\)

然后我们直接套扩欧的板子即可,这里注意有解的必要条件为\(gcd(C,2^k)\mid B-A\)

CODE

#include<cstdio>
using namespace std;
typedef long long LL;
LL A,B,C,K,a,b,c,d,x,y;
inline char tc(void)
{
static char fl[100000],*A=fl,*B=fl;
return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(LL &x)
{
x=0; char ch=tc();
while (ch<'0'||ch>'9') ch=tc();
while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=tc();
}
inline void write(LL x)
{
if (x/10) write(x/10);
putchar(x%10+'0');
}
inline void exgcd(LL a,LL b,LL &d,LL &x,LL &y)
{
if (!b) { d=a; x=1; y=0; return; }
exgcd(b,a%b,d,y,x); y-=x*(a/b);
}
int main()
{
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
for (;;)
{
read(A); read(B); read(C); read(K);
if (!A&&!B&&!C&&!K) break;
a=C; b=1LL<<K; c=B-A; exgcd(a,b,d,x,y);
if (c%d) { puts("FOREVER"); continue; }
b/=d; c/=d; write((((x%b)*c)%b+b)%b); putchar('\n');
}
return 0;
}

POJ3292&&2115的更多相关文章

  1. 【BZOJ】2115: [Wc2011] Xor

    http://www.lydsy.com/JudgeOnline/problem.php?id=2115 题意:给出一个n个点m条边的无向连通边加权图,求1-n的某条路径使得异或值最大(可以重复点可以 ...

  2. BZOJ 2115 Xor(抑或值最大路径)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2115 题意:给出一个带权无向图.求一条1到n的路径使得路径上权值的抑或值最大? 思路:( ...

  3. bzoj 2115: [Wc2011] Xor xor高斯消元

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 797  Solved: 375[Submit][Status] ...

  4. BZOJ 2115: [Wc2011] Xor

    2115: [Wc2011] Xor Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2794  Solved: 1184 [Submit][Stat ...

  5. POJ 2115 C Looooops(扩展欧几里得应用)

    题目地址:POJ 2115 水题. . 公式非常好推.最直接的公式就是a+n*c==b+m*2^k.然后能够变形为模线性方程的样子,就是 n*c+m*2^k==b-a.即求n*c==(b-a)mod( ...

  6. #数论-模运算#POJ 1150、1284、2115

    1.POJ 1150 The Last Non-zero Digit #质因数分解+模运算分治# 先贴两份题解: http://www.hankcs.com/program/algorithm/poj ...

  7. 数学#扩展欧几里德 POJ 1061&2115&2891

    寒假做的题了,先贴那时写的代码. POJ 1061 #include<iostream> #include<cstdio> typedef long long LL; usin ...

  8. POJ-3292 Semi-prime H-numbers---筛素数

    题目链接: https://vjudge.net/problem/POJ-3292 题目大意: 定义一种数叫H-numbers,它是所有能除以四余一的数. 在H-numbers中分三种数: 1.H-p ...

  9. bzoj 2115 Xor - 线性基 - 贪心

    题目传送门 这是个通往vjudge的虫洞 这是个通往bzoj的虫洞 题目大意 问点$1$到点$n$的最大异或路径. 因为重复走一条边后,它的贡献会被消去.所以这条路径中有贡献的边可以看成是一条$1$到 ...

随机推荐

  1. angularjs的$http请求方式

    /*$http常用的几个参数 $http服务的设置对象: 1.method 字符串 表示发送的请求类型 get post jsonp等等 2.url 字符串 绝对或者相对的URL,请求的目标 3.pa ...

  2. 安卓开发之自定义一个view弹出框

    https://www.cnblogs.com/muyuge/p/6152167.html

  3. python第三十一天-----类的封装、继承,多态.....

    封装 封装最好理解了.封装是面向对象的特征之一,是对象和类概念的主要特性. 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏. cla ...

  4. 代理ARP--善意的欺骗

    1. 代理ARP(Proxy ARP)是什么? 顾名思义,它指通过中间设备(通常为Router)代替其他主机响应ARP请求.对于没有配置默认网关的主机想要与其他网络的另一台主机通信时,网关收到源主机的 ...

  5. 字符串通过在配置文件配置三个key来进行加密解密

    在这里和大家分享一个加密util,相对于md5加密相信大家都已经很熟悉了吧,md5是不可逆的一种加密方式,虽说不可逆但是网上已经有了破解的方法,我这边分享一个免费的破解 网址给大家:https://w ...

  6. 10LaTeX学习系列之---Latex的文档结构

    目录 目录 前言 (一)对于Ctex宏包中的文档结构 1.说明 2.源代码 3.输出效果 4.技巧 (二)对于ctexart的文档结构 1.说明 2.源代码 3.输出效果 (三)对于ctexbook的 ...

  7. February 4th, 2018 Week 6th Sunday

    Hope clouds observation. 心怀希望会蒙蔽双眼,影响判断. Almost every of us thinks we would be the master of our liv ...

  8. ApplicationContext中Bean的生命周期

    引言 Bean应用上下文中的生命周期和在BeanFactory中生命周期类似,不同的是,如果Bean实现了org.springframework.context.ApplicationContextA ...

  9. mysql之4;

    1表之间的关系: 2select查询语句: 1表之间的关系 (1)多对一:(一个表里的多条记录对应另一个表里的一个记录) 建立多对一的关系需要注意1 先建立被关联的表,被关联的字段必须保证是唯一的2 ...

  10. c++ 常成员函数 和 常对象

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/zhuyingqingfen/article/details/31751111 先明白几个概念: 1. ...