列表

详情


BC170. 牛牛的digit

描述

牛牛定义了一个函数 digit(x,i) ,表示分离出 x 的后 i 位的数字。

输入描述

输入两个正整数 x 和 i

输出描述

输出 x 的后 i 位数字

示例1

输入:

23908 3

输出:

908

原站题解

C 解法, 执行用时: 2ms, 内存消耗: 288KB, 提交时间: 2022-05-10

#include <stdio.h>
#include <math.h>
int digit(int x, int i)
{
    int result = 0;
    result = x % (int)(pow(10,i));
    return result;
}
int main()
{
    int x = 0;
    int i = 0;
    scanf("%d %d",&x,&i);
    int result = digit(x,i);
    printf("%d\n",result);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2022-06-30

int digit(int x,int i)
{
    int ret=0;
    int n=i,m=0;
   while(i!=0)
   {
       m+=x%10;
       x/=10;
       i--;
       if(i!=0)
       {
           m*=10;
       }
   }
    while(n!=0)
    {
        ret+=m%10;
        m/=10;
        n--;
        if(n!=0)
        {
            ret*=10;
        }
    }
    return ret;
}
int main()
{
    int x=0,i=0;
    scanf("%d %d",&x,&i);
    printf("%d\n",digit(x,i));
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 296KB, 提交时间: 2022-04-17

#include<stdio.h>
#include<math.h>
int digit(int x,int i)
 {

 return x%(int)pow(10,i);
 
 
 
 }

int main(){
    
    int num=0;
    int i=0;
    scanf("%d %d",&num,&i);
    int ret=digit(num,i);
    printf("%d",ret);
    
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-06-19

#include <stdio.h>
#include <string.h>

// int main(){
//     char arr[20];
//     int count;
//     scanf("%s %d", arr, &count);
//     int len = strlen(arr);
//     for(int i = len-count; i < len; i++)
//         printf("%c", arr[i]);
//     return 0;
// }

// #include <stdio.h>

// int main(){
//     int count, n, i = 1, sum = 0;
//     scanf("%d %d", &n, &count);
//     while(count--){
//         sum += n % 10 * i;
//         n /= 10;
//         i *= 10;
//     }
//     while(i != 1){
//         count ++;
//         i /= 10;
//     }
//     if(sum < 10){
//         for(int j = 0; j < count; j++)
//             printf("0");
//     }
//     printf("%d", sum);
//     return 0;
// }

#include <stdio.h>

int compute(int n, int len, int i){
    int res = n % 10 * i;
    if(len == 1) return res;
    return res + compute(n/10, len-1, i*10);
}

int main(){
    int n, len, sum;
    scanf("%d %d", &n, &len);
    sum = compute(n, len, 1);
    if(sum < 10){
        for(int j = 1; j < len; j++)
            printf("0");
    }
    printf("%d", sum);
    return 0;
}

C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2022-05-24

#include<stdio.h>
int digit(int x, int i)
{
    if(i == 1)
    {
        return x % 10;
    }
    else
    {
       return digit(x / 10, i - 1) * 10 + x % 10;
    }
        
        
}
int main()
{
    unsigned int x =0, i = 0;
    scanf("%d %d",&x,&i);
    int ret = digit(x, i);
    printf("%d",ret);
    return 0;
}

上一题