c语言解决给定两个数a,b,求a^b的最后一位数。(即a的b次幂的个位数)
时间: 2024-03-10 18:47:08 浏览: 19
同样可以使用快速幂算法来求解,只需要将结果对 10 取模即可。具体实现如下:
```c
#include <stdio.h>
int quick_pow(int a, int b) {
int res = 1 % 10;
while (b) {
if (b & 1) {
res = res * a % 10;
}
a = a * a % 10;
b >>= 1;
}
return res;
}
int main() {
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", quick_pow(a, b));
return 0;
}
```
注意:这里计算过程中每次要对结果取模,否则可能会发生整型溢出,导致结果错误。
相关问题
c语言解决给定两个数a,b(0 < a&&b <=2^30),求a^b的最后一位数。(即a的b次幂的个位数)
可以使用快速幂算法来求解,具体实现如下:
```c
#include <stdio.h>
int quick_pow(int a, int b) {
int res = 1 % 10;
while (b) {
if (b & 1) {
res = res * a % 10;
}
a = a * a % 10;
b >>= 1;
}
return res;
}
int main() {
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", quick_pow(a, b));
return 0;
}
```
快速幂算法的时间复杂度为 $O(\log b)$,可以通过本题。
c语言实现给定一个两位数的整数,分别输出它的十位和个位数
好的,可以使用以下代码实现:
```
#include <stdio.h>
int main() {
int num;
printf("请输入一个两位数的整数:");
scanf("%d", &num);
printf("十位数为:%d\n", num / 10);
printf("个位数为:%d\n", num % 10);
return 0;
}
```
通过 `scanf` 函数获取用户输入的整数,然后使用除法和取模运算分别得到十位数和个位数,并输出即可。