列表

详情


BL1. 扭蛋机

描述

22娘和33娘接到了小电视君的扭蛋任务:
一共有两台扭蛋机,编号分别为扭蛋机2号和扭蛋机3号,22娘使用扭蛋机2号,33娘使用扭蛋机3号。
扭蛋机都不需要投币,但有一项特殊能力:
扭蛋机2号:如果塞x(x范围为>=0整数)个扭蛋进去,然后就可以扭到2x+1个
扭蛋机3号:如果塞x(x范围为>=0整数)个扭蛋进去,然后就可以扭到2x+2个
22娘和33娘手中没有扭蛋,需要你帮她们设计一个方案,两人“轮流扭”(谁先开始不限,扭到的蛋可以交给对方使用),用“最少”的次数,使她们能够最后恰好扭到N个交给小电视君。

输入描述

输入一个正整数,表示小电视君需要的N个扭蛋。

输出描述

输出一个字符串,每个字符表示扭蛋机,字符只能包含"2"和"3"。

示例1

输入:

10

输出:

233

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-08-10

#include<stdio.h>
int print(int n)
{
    if(n==1)
    {
        printf("2");
        return 1;
    }
    if(n==2)
    {
        printf("3");
        return 1;
    }
    if(n%2)
    {
        print(n/2);
        printf("2");
    }
    else
    {
        print(n/2-1);
        printf("3");
    }
    return 1;
}
int main()
{
    int n;
    scanf("%d",&n);
    print(n);
}

C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-07-16

#include<stdio.h>
int print(int n)
{
    if(n==1)
    {
        printf("2");
        return 1;
    }
    if(n==2)
    {
        printf("3");
        return 1;
    }
    if(n%2)
    {
        print(n/2);
        printf("2");
    }
    else
    {
        print(n/2-1);
        printf("3");
    }
    return 1;
}
int main()
{
    int n;
    scanf("%d",&n);
    print(n);
}

C 解法, 执行用时: 1ms, 内存消耗: 412KB, 提交时间: 2020-11-05

#include<stdio.h>

int Bilibili(int n)
{
	if(n==1)
	{
		printf("2");
		return 0;
	}
	if(n==2)
	{
		printf("3");
		return 0;
	}
	if(n%2==1)
	{
		printf("2",Bilibili((n-1)/2));
	}
	if(n%2==0)
	{
		printf("3",Bilibili((n-2)/2));
	}
	
	return 0;
}

int main()
{
	int n;
	scanf("%d",&n);
	
	Bilibili(n);
	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 416KB, 提交时间: 2020-07-31

#include<stdio.h>
int print(int n)
{
    if(n==1)
    {
        printf("2");
        return 1;
    }
    if(n==2)
    {
        printf("3");
        return 1;
    }
    if(n%2)
    {
        print(n/2);
        printf("2");
    }
    else
    {
        print(n/2-1);
        printf("3");
    }
    return 1;
}
int main()
{
    int n;
    scanf("%d",&n);
    print(n);
}

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

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[100]={0};
    int n,k=0;
    scanf("%d",&n);
    while (n>0)
    {
        if (n%2==0)
        {
            a[k++]=3;
            n=n/2-1;
        }
        else
        {
            a[k++]=2;
            n=n/2;
        }
    }
    for (int i=k-1;i>=0;i--) printf("%c",a[i]+'0');
    return 0;
}

上一题