目录
1.BC31 2的n次方计算
描述
不使用累计乘法的基础上,通过移位运算(<<)实现2的n次方的计算。
数据范围:0≤�≤31 0≤n≤31
输入描述:
一行输入整数n(0 <= n < 31)。
输出描述:
输出对应的2的n次方的结果。
#include <stdio.h>
int main()
{
int num = 1;
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++)
{
num = num << 1;
}
printf("%d\n", num);
return 0;
}
<< 左移操作符:左边抛弃、右边补0
2.BC44 小乐乐与欧几里得
描述
小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。
输入描述:
每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)
输出描述:
对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。
#include <stdio.h>
int main() {
long long m, n;
scanf("%d%d", &m, &n);
long long y = n, x = m; //保留最原始的两个数
//辗转相除法求最大公约数
if (m < n) { //保证m始终为最大的数
long long temp = m;
m = n;
n = temp;
}
long long r;
r = m % n;
while (r != 0) { //辗转相除,最后的n即为最大公约数
m = n;
n = r;
r = m % n;
}
//最小公倍数=m*n/最大公约数
long long h = (x * y) / n;
printf("%lld", h + n);
return 0;
}
注意数字的类型为long long类型,输出的时候用%lld
3.BC45 小乐乐改数字
描述
小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数,就把它变成1,如果是偶数,那么就把它变成0。请你回答他最后得到的数是多少。
输入描述:
输入包含一个整数n (0 ≤ n ≤ 109)
输出描述:
输出一个整数,即小乐乐修改后得到的数字。
3.1自己写的(多次循环)
#include<stdio.h>
int main()
{
int number;
scanf("%d", &number);
int h = number;
int result=0,weishu=0;
while (number )
{
weishu++;
h = number % 10;//每位的数变
number = number / 10;
int n;//改变后每位的数变
if (h % 2 == 0)
{
n = 0;
}
else
n = 1;
if (weishu <=1)
{
result += n*1;
}
else
{
for (int i = 0; i < weishu-1 ; i++)
{
n = n * 10;
}
result += n;
}
}
printf("%d", result);
return 0;
}
3.2代码改良(运用库函数pow)
#include <stdio.h>//2.运用库函数pow
#include<math.h>
int main()
{
int n = 0;
scanf("%d", &n);
int ret = 0;
int i = 0;
while (n)
{
int w = n % 10;
if (0 == w % 2)
{
w = 0;
}
else
{
w = 1;
}
ret += w * pow(10, i++);
n /= 10;
}
printf("%d\n", ret);
return 0;
}
3.3递归函数写
#include <stdio.h>//3.递归
int bian(long long n)
{
int b = n % 10;//得到的每位数字
int c = b % 2;//观察这位数是奇是偶
n = n / 10;
if (n)
{
return 10 * bian(n) + c;
}
return c;
}
int main()
{
long long n = 0;
scanf("%lld", &n);
int a = bian(n);
printf("%d", a);
return 0;
}
4.BC39 牛牛的水杯
描述
牛牛口渴了,要喝10升水才能解渴,但现在只有一个深 h 厘米,底面半径是 r 厘米的水杯,牛牛最少要喝多少杯水才能解渴。
水杯的体积公式是 �×ℎ×�2 π×h×r2 ,其中 � π 取 3.14 ,ℎ h 和 � r 是整数。
输入描述:
输入杯子的高度 h ,底面半径 r 。
输出描述:
输出牛牛最少要喝多少杯水
#include <stdio.h>
int main()
{
int h, r,count1;
scanf("%d%d", &h ,& r);
float v = 3.14 * h * r*r;
float count = (10 * 1000)/v;
if (count - (int)count == 0)
{
count1 = (int)count;
}
else
count1 = (int)count+1;
printf("%d\n", count1);
return 0;
}