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

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

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. loadrunner 场景设计-制定负载测试计划

    by:授客 QQ:1033553122 场景设计-制定负载测试计划 步骤1.分析应用程序 你应该对硬件和软件组建,系统配置和典型的使用场景很熟悉.这些应用程序的分析保证你在使用loadrunner进行 ...

  2. iOS开发NSDate、NSString、时间戳之间的转化

    //将UTCDate(世界标准时间)转化为当地时区的标准Date(钟表显示的时间) //NSDate *date = [NSDate date]; 2018-03-27 06:54:41 +0000 ...

  3. Related concepts of testing

    根据是否知道源代码测试可以分为黑盒和白盒. 黑盒:功能测试. 白盒:知道源代码,要写测试代码. 根据测试的粒度. 方法测试: 单元测试: 集成测试: 系统测试: 根据测试的暴力程度. 压力测试:谷歌工 ...

  4. python第七天-作业[购物车]

    作业要示: 购物车程序:启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出 ...

  5. CSS图片水平垂直居中

    Html: <div id="></img></div> </div> CSS: #MainContent { display:table-c ...

  6. [MapReduce_1] 运行 Word Count 示例程序

    0. 说明 MapReduce 实现 Word Count 示意图 && Word Count 代码编写 1. MapReduce 实现 Word Count 示意图 1. Map:预 ...

  7. SVN与Git比较的优缺点差异

    目录: SVN与Git比较(一)集中式vs分布式 SVN与Git比较(二)版本库与工作区 SVN与Git比较(三)全局版本号和全球版本号 SVN与Git比较(四)部分检出 SVN与Git比较(五)更新 ...

  8. Vue、Vuex+Cookie 实现自动登陆 。

    概述 1.自动登陆实现思路. 2.vuex + cookie 多标签页状态保持. 自动登陆的需求: 1.登陆时勾选自动登陆,退出登陆或登陆到期后再次登陆后自动填写表单(记住密码)或访问登陆页自动登陆. ...

  9. IntelliJ IDEA 创建Spring项目

    第一步:点击file --> new --> project... 第二步: 在左侧选择Spring, 然后勾选Spring , 最后点击Next 第三步 : 填写项目名称和项目地址,点击 ...

  10. Mybatis&orcale update语句中接收参数为对象

    Mybatis的 mapper.xml 中 update 语句使用 if 标签判断对像属性是否为空值. UserDTO是传过来参数的类型,userDTO是在mapperDao接口中给更新方法的参数起的 ...