演算法與位運算例題

2021-09-10 06:00:25 字數 1954 閱讀 9653

題目:輸入乙個32位的整數a,使用按位異或^運算,生成乙個新的32位整數b,使得該整數b的每一位等於原整數a中該位左右兩邊兩個bit位的異或結果

#include

int main()

int t,i,c;

int b=1,j=1;

int a[32];

int p[32];

printf(「please input one numbers(0-32):」);

scanf("%d",&t);

for(i=0;i<32;i++)

c= b & t;

t = t>>1;

a[i]=c;

p[0]=a[0];

p[31]=a[31];

for(i=0;i<30;i++)

if(a[i]==1 &&
a[i+2]==1)

p[j]=0;

else

p[j]= a[i] | a[i+2];

j++;

for(j=31;j>=0;j–)

printf("%d",p[j]);
printf("\n");

return 0;

題目:有n個人圍成一圈,順序排號,從第乙個開始報數(從1到3報數),凡報到3的人退出圈子,問最後最後留下的是原來第幾號的那位.

#include

int main()

printf(「please input a number,which is 4 to 1000\n」);

int n,i,t,b,c,d;

int a[1000];

int sum=0;

int number=0;

scanf("%d",&n);

if(n<=3)

printf("error!under four people can』t encircle a circle\n ");

for(i=0;inumber=number+1;

if(n-number==2)

continue;

}}

c=i+1;

for(i=0;inumber is %d",t);

}if(c>b || ccnumber is %d",b);

}return 0;

加強版

#include

int main()

printf(「please input a number\n」);

int n,i,c;

int a[1000];

int sum=0;

scanf("%d",&n);

c=n;

for(i=0;ii=0;

while(n>1)

if(i==c)

i=0;

if(a[i]==1)

sum=sum+1;

if(sum==3)

i++;

for(i=0;inumber is %d",i+1);

}return 0;

1.     

題目: 乙個數如果恰好等於它的因子之和,這個數被成為」完數」,例如:6=1+2+3.請程式設計找出1000以內的完數

#include

int main()

int i,j,sum;

for(i=4;i<1001;i++)

sum=0;

for(j=i-1;j>1;j–)

if(i%j==0)

sum=sum+j;

if(sum+1==i)

printf("\n");

printf("%d

",i);

return 0;

位運算基本內容與例題

201.數字範圍按位與 我們求 運算,最開始想到的暴力方法,將每個數字與運算過一遍 示例1 ans 5 6 7code int bit int m int n return result 注意result初始化為m,而不是0,想想為什麼?因為如果設定 result 0 0 i 0 0 任何東西都 0...

演算法 位運算

public static intpowern int m,int n return m public static void main string args public static boolean ispower int n return false num如何使2的n次冪,那麼num nu...

位運算的4個例題

例題1 尋找獨一無二的數 解答 利用位運算異或的性質 a a 0,a 0 a,a b c a b c a b c 資料規模100萬,不能用o n 2 應該用o n 演算法,邊讀取邊處理。例題2 為了未來的計算機 解答 方法 一 利用位運算且的性質 a 1 方法 二 利用位運算且的性質 a a 1 可...