1173:寻找2的幂

1173:寻找2的幂


Description

数学上把2的K次方叫2的K次幂,如4、8、32等。给定一个整数n,请输出距离它最近的那个2的幂是多少。如果有两个距离相同,输出那个小的。

Input

只有一个整数 n(10 <= n <= 2000000000)

Output

只有一个整数,表示距离 最近的那个2的幂。

Sample Input

17

Sample Output

16


#include<iostream>
using namespace std;
int main()
{
    long long int n,a[100]={0};
    cin>>n;
    a[0]=1;
    for(int i=1;i<33;i++)
    a[i]=a[i-1]*2;
    for(int i=3;i<33;i++)
    {
        if(n-a[i]<a[i+1]-n||n-a[i]==a[i+1]-n)
           {
            cout<<a[i];
            break;
           }
    }
}


计算矩阵的 k 次可以使用 C 语言进行编程。下面是一种简单的算法: 1. 定义一个,接收一个矩阵和一个 k 作为输入参。 2. 检查矩阵是否为方阵,即行和列是否相等。 3. 创建一个新的矩阵,将其初始化为单位矩阵。 4. 循环 k 次,每次将新矩阵乘以原始矩阵。 5. 返回新矩阵作为结果。 以下是伪代码的示例: ``` #define N 3 // 矩阵的大小 // 矩阵乘法函 void matrix_multiply(int a[N][N], int b[N][N], int c[N][N]) { int i, j, k; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { c[i][j] = 0; for (k = 0; k < N; k++) { c[i][j] += a[i][k] * b[k][j]; } } } } // 计算矩阵的 k 次 void matrix_power(int matrix[N][N], int k, int result[N][N]) { int i, j; int tmp[N][N]; // 临时矩阵 // 初始化结果矩阵为单位矩阵 for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { if (i == j) { result[i][j] = 1; } else { result[i][j] = 0; } } } // 循环 k 次计算 for (i = 0; i < k; i++) { matrix_multiply(result, matrix, tmp); memcpy(result, tmp, sizeof(tmp)); // 将结果拷贝回结果矩阵 } } // 示例用法 int main() { int matrix[N][N] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; int result[N][N]; int k = 3; // 求 3 次 matrix_power(matrix, k, result); // 打印结果矩阵 int i, j; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) { printf("%d ", result[i][j]); } printf("\n"); } return 0; } ``` 以上代码仅为示例,可以根据实际情况进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值