GOJ1070 

思路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

GOJ1359

 思路:先将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

void *memset(void *s, int ch, sizeof(n));
解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t)用 ch 替换并返回 s 。
对数组操作时只能用于数组的置0或-1,其他值无效。
memset(ch,-1,sizeof(ch))就是将数组ch中所有元素替换为-1,返回ch。

GDUFE-OJ 1070上班打卡 ^位运算的更多相关文章

  1. 位运算(bit)

    位运算(bit) Time Limit:2000ms   Memory Limit:64MB [题目描述] lyk最近在研究位运算.它发现除了xor,or,and外还有很多运算.它新定义了一种运算符“ ...

  2. 位运算总结(Bit Operation)

    位运算 数字用二进制表示后的运算 无论是有符号,无符号还是其他各种类型的数.它们之间的转换的基石就是二进制的表达式没有发生改变,变得只是转换的表达式. 1.简单的布尔运算 Boolean algebr ...

  3. 位运算基础知识及简单例题(待补全Hamilton)

    位运算 +++ 1 : 0000000000...01 2 : 0000000000...10 3 : 0000000000...11 补码 1 + x = 0000000000...00 1 + 1 ...

  4. [位运算] [搜索] [递推优化] [计算几何] TEST 2016.7.15

    NOIP2014 提高组模拟试题 第一试试题 题目概况: 中文题目名称 合理种植 排队 科技节 源程序文件名 plant.pas/.c/.cpp lineup.pas/.c/.cpp scifest. ...

  5. BZOJ 3595: [Scoi2014]方伯伯的Oj Splay + 动态裂点 + 卡常

    Description 方伯伯正在做他的Oj.现在他在处理Oj上的用户排名问题. Oj上注册了n个用户,编号为1-”,一开始他们按照编号排名.方伯伯会按照心情对这些用户做以下四种操作,修改用户的排名和 ...

  6. 位运算 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^ ...

  7. 位运算 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 ...

  8. 位运算&字节运算

  9. 位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)

    原文:位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<) 先知道这两个二进制数据的特点:   1=0000 0000 0000 0000 0000 000 ...

随机推荐

  1. 另一种在WINFORM中使用XNA的方法

    之前在写化学分子模型制作程序的时候,使用一种方法,将WINFORM控件嵌入到XNA窗体中,从而实现了即使用WINFORM窗体控件又使用XNA.最近在写另一个物理运动学课件制作程序,同样使用XNA,但从 ...

  2. canvas简单处理图片(反色处理)

    用canvas可以简单地处理图像,比如切割 灰色处理等,今天记下的是图像的反色处理. <!DOCTYPE html> <html> <head> <meta ...

  3. WordPress基础:固定链接的设置

    安装wordpressp后的工作之一最好修改固定链接,原因就是wp默认的/?p=123形式不利于搜索引擎优化而且也不美观. URL结构参数说明:%year%:日志发表的年份,如2009%monthnu ...

  4. RelativeLayout中的格局,自适应宽度布局

    RelativeLayout中的布局,自适应宽度布局 该图片中为android布局:总布局为 RelativeLayoutAtLeft 为居左 <TextView android:backgro ...

  5. css中很有用的属性

    有些css属性很实用,但不常用也就被忘记. 这里纪录了自己在项目中用过的一些. html,body{ -webkit-tap-highlight-color:transparent; } 这个的用途是 ...

  6. 判断ecshop未付款添加去付款按钮

    判断ecshop未付款添加去付款按钮,打开ecshop模板目录下user_transaction.dwt找到{$item.handler} 这个变量 给它下面添加以下代码 {if $item.pay_ ...

  7. sed 引入shell变量

    双单引号即可 1.eval sed ’s/$a/$b/’ filename2.sed "s/$a/$b/" filename3.sed ’s/’$a’/’$b’/’ filenam ...

  8. spark 简介

    spark 是基于内存计算的 大数据分布式计算框架,spark基于内存计算,提高了在大数据环境下处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将spark部署在大量廉价的硬件上,形成集群. 1 ...

  9. PHP无限极分类,多种方法|很简单,这里说的很详细,其它地方说的很不好懂

    当你学习php无限极分类的时候,大家都觉得一个字"难"我也觉得很难,所以,现在都还在看,因为工作要用到,所以,就必须得研究研究.   到网上一搜php无限极分类,很多,但好多都是一 ...

  10. Spring配置AOP实现定义切入点和织入增强

    XML里的id=””记得全小写 经过AOP的配置后,可以切入日志功能.访问切入.事务管理.性能监测等功能. 首先实现这个织入增强需要的jar包,除了常用的 com.springsource.org.a ...