GDUFE-OJ 1070上班打卡 ^位运算
思路1:运用位运算符‘ ^ ’,运用A^B^B=A的原理,直接求解
#include <stdio.h>
int main()
{
int n,i,b,a;
while(scanf("%d",&n)!=EOF&&n!=)
{
b=;
for(i=;i<*n-;i++)
{
scanf("%d",&a);
b=b^a;
}
printf("%d\n",b);
}
return ;
}
思路2: 全部输入后,sort排序,检索出落单的数字。
#include<stdio.h>
#include<algorithm>
using namespace std;
int ch[]={};
int main()
{
int a,n,i;
while(scanf("%d",&n)!=EOF&&n!=)
{
a=;
for(i=;i<*n-;i++)
scanf("%d",&ch[i]);
sort(ch,ch+(*n-));
for(i=;i<*n-;i+=)
if(ch[i]!=ch[i+])
{
a=;
break;
}
if(a==&&i==*(n-)) printf("%d\n",ch[*n-]);
else printf("%d\n",ch[i]);
}
return ;
}
思路3:因为公司人数最大50000,打卡编号也是50000,假设人数50000;假设一一对应,那么直接开ch[50000]={0},然后将输入的打卡编号对应的数组下标的数组的值+1,最后检索,落单的编号的值是1,其余是2。可得答案。此方法好投机取巧,妙哉。
A^0=A,A^B^B=A 。位运算符还是很有用的。
GOJ1203
思路:快速幂求a^b,然后mod c。因为是随便输入的a,b,所以范围很大,而题目只需求最后三位,所以百位以上的计算不用理了,直接%1000。
#include <stdio.h>
int main()
{
unsigned long long a,b;
while(scanf("%llu%llu",&a,&b)!=EOF)
{
unsigned long long c=,d=a;
while(b!=)
{
if(b&!=)//如果是0则无需计算,因为n*1=n
c*=d%;
d*=d%;
b>>=;
}
if(c%>)
printf("%llu\n",c%);
else if(c%>)
printf("0%llu\n",c%);
else
printf("00%llu\n",c%);
}
return ;
}
Tip:以上mod c是因为怕数字过大爆了,一是因为a的b次mod c,二是因为早晚要mod c,所以早mod 无所谓。
小知识:
快速幂原理:a^b,将b拆成二进制数相加的形式,从而使运算次数减少
Example:a^11=a^(2^0+2^1+2^3),时间复杂度为O(log11)。
scanf("%d%d",&a,&b)
int c=,d=a;
while(b!=)
{
if(b&!=)//取b的二进制数的最后一位(相当于b%2!=0)
c*=d;
d*=d; //每往右推一位,d倍增,2^0 2^1 2^2……
b>>=;//将b的二进制数往右推一位(相当于b/=2)
}
printf("%d\n",c);//c=a^b
思路:先将1-500000的所有素数筛出,并在此过程中筛出含‘33’的数,最后在L到R之间计数。
#include <stdio.h>
#include <string.h>
int ch[],ch33[],k=; int is33(int l)//筛出包含‘33’的数
{
while(l>)
{
if(l%==)return ;
l/=;
}
return ;
} void judge()//判断素数(埃氏筛法)
{
long long i,j;
memset(ch,-,sizeof(ch));//将ch所有元素初始化为-1
for(i=;i<=;i++)
if(ch[i]==-)
{
if(is33(i))
{
ch33[k++]=i;//存入ch33数组
}
for( j=i*i;j<=;j+=i)
ch[j]=;
}
} int main()
{
int n,s=,g,a,L,R,i;
judge();
while(scanf("%d",&n)!=EOF)
while(n--)
{
s++;
scanf("%d%d",&L,&R);
for(g=,a=;g<k;g++)
{
if(ch33[g]>=L&&ch33[g]<=R)a++;
if(ch33[g]>R)break;
}
printf("Case #%d: %d\n",s,a);
}
return ;
}
以下是埃氏筛法的示意图:

原理:
1. 根据算术基本定理(百度):任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积。
2. 先用2筛,筛走不是素数的数(也就是2的倍数),接着用3,5,7……直到最后一位。
3. 被筛走的可以标记,后面就不再用这个数筛。
Tips:
1.sizeof是判断数据类型或者表达式长度符,用于计算有多少个字节。
sizeof(int)==4。
char ch[10]="abc",sizeof(ch)==10*1。
2.strlen是求字符串(仅字符串)长度的函数。char ch[10]="abc",strlen(ch)==3.
3.memset
GDUFE-OJ 1070上班打卡 ^位运算的更多相关文章
- 位运算(bit)
位运算(bit) Time Limit:2000ms Memory Limit:64MB [题目描述] lyk最近在研究位运算.它发现除了xor,or,and外还有很多运算.它新定义了一种运算符“ ...
- 位运算总结(Bit Operation)
位运算 数字用二进制表示后的运算 无论是有符号,无符号还是其他各种类型的数.它们之间的转换的基石就是二进制的表达式没有发生改变,变得只是转换的表达式. 1.简单的布尔运算 Boolean algebr ...
- 位运算基础知识及简单例题(待补全Hamilton)
位运算 +++ 1 : 0000000000...01 2 : 0000000000...10 3 : 0000000000...11 补码 1 + x = 0000000000...00 1 + 1 ...
- [位运算] [搜索] [递推优化] [计算几何] TEST 2016.7.15
NOIP2014 提高组模拟试题 第一试试题 题目概况: 中文题目名称 合理种植 排队 科技节 源程序文件名 plant.pas/.c/.cpp lineup.pas/.c/.cpp scifest. ...
- BZOJ 3595: [Scoi2014]方伯伯的Oj Splay + 动态裂点 + 卡常
Description 方伯伯正在做他的Oj.现在他在处理Oj上的用户排名问题. Oj上注册了n个用户,编号为1-”,一开始他们按照编号排名.方伯伯会按照心情对这些用户做以下四种操作,修改用户的排名和 ...
- 位运算 ZOJ 3870 Team Formation
题目传送门 /* 题意:找出符合 A^B > max (A, B) 的组数: 位运算:异或的性质,1^1=0, 1^0=1, 0^1=1, 0^0=0:与的性质:1^1=1, 1^0=0, 0^ ...
- 位运算 2013年山东省赛 F Alice and Bob
题目传送门 /* 题意: 求(a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1) 式子中,x的p次方的系数 二进制位运算:p ...
- 位运算&字节运算
- 位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)
原文:位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<) 先知道这两个二进制数据的特点: 1=0000 0000 0000 0000 0000 000 ...
随机推荐
- centos7设置网关
1.cd /etc/sysconfig/network-scripts 2.vi 网络文件 3.service network restart
- git clone时,报403错误,完美解决方案
首先命令行操作结果如下: root@zhiren-PowerEdge-T110-II:/zrun# git clone https://git.coding.net/xxxxxxxx/xxxx.git ...
- Android中,Context,什么是Context?
注:本文翻译自Context, What Context?,原文链接在这里,作者是Dave Smith.ps:译者链接http://blog.csdn.net/race604/article/deta ...
- 接口测试之基于LoadRunner的一个简单示例
这几天一直在捣鼓接口测试,以下总结一下: 1.什么是接口测试:接口是指系统模块与模块之间或者系统与系统之间进行交互,一般我们用的多的是HTTP协议的接口.WebService协议的接口.还有RPC(R ...
- Android 使用Socket进行通信(Android)
一.服务器程序 服务器程序需要在PC上运行,该程序比较的简单,因此不需要建立Android项目,直接定义一个JAVA类,并且运行该类即可.它仅仅建立ServerSocket监听,并使用Socket获取 ...
- VSS转SVN
我们都知道VSS和SVN都是源代码的版本控制软件:最近公司准备把多年使用的VSS代码全部转到SVN中进行管理,查询了一些资料,整理一下,分享给大家 基本分三大步进行,如下: 1.去掉VSS所有绑定 2 ...
- Css定位之relative_慕课网课程笔记
前言 最近在慕课网上跟着张鑫旭大神重新学习一遍CSS相关的知识,以下是学习的笔记以及个人一些理解 relative对绝对定位的限制 1.限制绝对定位 绝对定位的top.left.right和botto ...
- J2EE与JavaWeb的区别
1.Java分类 Java分为JavaSE(Java标准版).J2EE(Java企业版)和JavaME(Java微型版): JavaSE(Java Standard Edition),一般用来开发桌面 ...
- Last time, I wrote a pager, but now it seems this no longer has use, so I want to paste it here.
public class Pager<T> where T : new() { private IEnumerable<T> _all; private IEnumerable ...
- redmine常见问题
1.测试Pop3邮件收件任务:rake redmine:email:receive_pop3 RAILS_ENV="production" host=pop.cecgw.cn po ...