鱼C论坛

 找回密码
 立即注册
查看: 5385|回复: 34

[已解决]梦想护卫舰 第21期 解决题目

[复制链接]
发表于 2023-2-5 17:15:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 sfqxx 于 2023-2-6 15:01 编辑

他们见你们那么厉害,只好把你们带到关押zhangjinxuan的位置
没想到,这里还设了3道题目?!
那么,请作答

第一题(水题)
(非原创)如果你在Idle种不小心把内置函数赋值了,那么如何撤销呢?
请至少说出2种有效方法

第二题:(原创)在python种如何用代码在一行内输入2个数字,中间有空格
例子:
2 5
(2)那3个数呢?

第三题:实验题
上题目!
字幕君累了,见这个网页(注:需要登陆)
没登陆看这→https://www.luogu.com.cn/
登陆了看这→https://www.luogu.com.cn/problem/P9033?contestId=98078

奖励随机,没有答案!

制作不易,评个分呗 (VIP不扣荣誉和贡献的啦)
最佳答案
2023-2-5 19:11:17
1. https://fishc.com.cn/forum.php?m ... 138&pid=6137054
2. a, b = map(int, input().split())
3.
def ten_to_two(x):
    return bin(x)[2:]

def two_to_ten(x):
    return int(x, 2)

def solve(a, b, c):
    if b > c:
        if two_to_ten('1' + (len(ten_to_two(b))-1) * '0') > c or a == 1:
            print(-1)
            return
        print(two_to_ten('1' + (len(ten_to_two(b))-1) * '0'), two_to_ten(ten_to_two(b)[1:]), end = ' ')
        print(*([0] * (a-2)))
        return
    if b <= c:
        print(b, end = ' ')
        print(*([0] * (a-1)))
        return

n = int(input())
for i in range(n):
    a, b, c = map(int, input().split())
    solve(a, b, c)
感觉还是 @zhangjinxuan 发的贴比较好

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-5 19:08:37 From FishC Mobile | 显示全部楼层
本帖最后由 dolly_yos2 于 2023-2-5 20:05 编辑

不用 IDLE,好奇一下这两种方法是不是应该都可行?
魔法版:
import os;os.execlp("python", "python")
正常版:
locals().pop('<被覆盖的名字>')

第二题没意思

第三题等待会再编辑上来(似乎并不需要登录,还是登录与否看到的内容不同(不会吧)?)
很快 C 就(终于)会有标准库中的 clz 之类的函数啦!
#include <stdio.h>
#include <stdint.h>
static inline uint8_t count_effective_bits(uint32_t value){
    uint8_t result = 0;
    if(value > 0xffff){ result += 16; value >>= 16; }
    if(value >   0xff){ result +=  8; value >>=  8; }
    if(value >    0xf){ result +=  4; value >>=  4; }
    switch(value){
        case 7: case 6: case 5: case 4:
            result += 1;
        case 3: case 2:
            result += 1;
        case 1:
            result += 1;
        case 0:
            break;
        default:
            result += 4;
            break;
    }
    return result;
}
int main(){
    scanf("%*u");
    unsigned int n, k, m;
    while(scanf("%u%u%u", &n, &k, &m) == 3){
        if(k > m && n == 1){ printf("-1\n"); continue; }
        if(k <= m){
            printf("%u", k);
            for(unsigned int i = 1; i < n; i++) printf(" 0");
            putchar('\n');
            continue;
        }
        uint8_t effective_bits = count_effective_bits(m);
        unsigned int base = 1 << (effective_bits - 1);
        unsigned int limit = (1 << effective_bits) - 1;
        if(k > limit){ printf("-1\n"); continue; }
        printf("%u %u", base, k - base);
        for(unsigned int i = 2; i < n; i++) printf(" 0");
        putchar('\n');
    }
    return 0;
}

评分

参与人数 1荣誉 +4 贡献 +3 收起 理由
sfqxx + 4 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-5 19:11:17 | 显示全部楼层    本楼为最佳答案   
1. https://fishc.com.cn/forum.php?m ... 138&pid=6137054
2. a, b = map(int, input().split())
3.
def ten_to_two(x):
    return bin(x)[2:]

def two_to_ten(x):
    return int(x, 2)

def solve(a, b, c):
    if b > c:
        if two_to_ten('1' + (len(ten_to_two(b))-1) * '0') > c or a == 1:
            print(-1)
            return
        print(two_to_ten('1' + (len(ten_to_two(b))-1) * '0'), two_to_ten(ten_to_two(b)[1:]), end = ' ')
        print(*([0] * (a-2)))
        return
    if b <= c:
        print(b, end = ' ')
        print(*([0] * (a-1)))
        return

n = int(input())
for i in range(n):
    a, b, c = map(int, input().split())
    solve(a, b, c)
感觉还是 @zhangjinxuan 发的贴比较好

评分

参与人数 1荣誉 +3 贡献 +3 收起 理由
sfqxx + 3 + 3 下次就算做的不好也别说[doge]

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-5 19:53:09 | 显示全部楼层
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
ll T, n, m, k, temp;
bool s = 0;

int highbit(ll x){
    int ans = 0;
    while(x){
        x >>= 1;
        ans++;
    }
    return ans;
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> T;
    while(T--){
        cin >> n >> k >> m;
        if(highbit(k) > highbit(m) || (n == 1 && k > m)){
            cout << -1 << endl;
        }
        else{
            while(n > 1 && k){
                cout << (1 << (highbit(k) - 1)) << " ";
                n--;
                k -= ((1 << (highbit(k) - 1)));
            }
            cout << k << " ";
            for(int i = 1; i <= n - 1; i++) cout << 0 << " ";
            cout << endl;
        }
    }

    return 0;
}

评分

参与人数 1荣誉 +3 贡献 +2 收起 理由
sfqxx + 3 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-5 20:01:21 From FishC Mobile | 显示全部楼层
tommyyu 发表于 2023-2-5 19:11
1. https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=224138&pid=6137054
2. a, b = map( ...

***
小心不给您最佳!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-5 20:26:21 | 显示全部楼层
tommyyu 发表于 2023-2-5 19:11
1. https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=224138&pid=6137054
2. a, b = map( ...

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-5 20:26:37 | 显示全部楼层
dolly_yos2 发表于 2023-2-5 19:08
不用 IDLE,好奇一下这两种方法是不是应该都可行?
魔法版:
正常版:

全部做完才有机会最佳答案哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-5 20:27:32 | 显示全部楼层
后面呢,我就被就出来了,拯救zhangjinxuan的故事也结束了,宝箱也重新回到了手中,然后……然后又继续编

题没啥意思,不想丸
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-5 20:27:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-5 20:28:37 | 显示全部楼层

本期应是21期,另外,不要说 po jie 题目,换一个,解题,好不好,因为 po jie 好像会审核
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-5 20:28:55 | 显示全部楼层
zhangjinxuan 发表于 2023-2-5 20:27
后面呢,我就被就出来了,拯救zhangjinxuan的故事也结束了,宝箱也重新回到了手中,然后……然后又继续编{: ...

进入幻境,还是答题
循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-5 20:30:02 | 显示全部楼层
zhangjinxuan 发表于 2023-2-5 20:28
本期应是21期,另外,不要说 po jie 题目,换一个,解题,好不好,因为 po jie 好像会审核

原来如此

评分

参与人数 1鱼币 +5 收起 理由
zhangjinxuan + 5 你看,我回复一个 pojie 我就吞帖了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-5 20:30:46 | 显示全部楼层
sfqxx 发表于 2023-2-5 20:28
进入幻境,还是答题
循环

破解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-5 20:31:50 | 显示全部楼层
sfqxx 发表于 2023-2-5 20:26
全部做完才有机会最佳答案哦

哈哈,可不是为了最佳来的,有趣才是第一出发点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-5 20:32:47 | 显示全部楼层
dolly_yos2 发表于 2023-2-5 20:31
哈哈,可不是为了最佳来的,有趣才是第一出发点

行,这种想法能理解,那么就加点奖励吧
(我也想要评分)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-5 20:33:00 | 显示全部楼层
本帖最后由 tommyyu 于 2023-2-5 20:44 编辑
sfqxx 发表于 2023-2-5 20:28
进入幻境,还是答题
循环


我有一个嚎主意
但是这个主意可能会让高山把你的工资扣完,而且@zhangjinxuan 可能要多蹲几年大牢
救zhangjinxuan时,你们先走了你和zhangjinxuan之间距离的一半,外星人给你们出了一道题,才能再把下一半路走完
走到一半的一半时,又出了一道题
每再走一半就会再出几道题
这样就能一直出(shuǐ)题了

点评

我很赞同!: 5.0
我很赞同!: 5
想要评分  发表于 2023-2-5 20:34

评分

参与人数 1鱼币 +1 收起 理由
sfqxx + 1 感谢提供思路,那么就采取这种想法吧

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2023-2-5 20:35:03 | 显示全部楼层
破解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-5 20:43:50 | 显示全部楼层
tommyyu 发表于 2023-2-5 20:33
我有一个嚎主意
但是这个主意可能会让高山把你的工资扣完,而且@zhangjinxuan 可能要多蹲几 ...

听我说谢谢你~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-5 20:44:23 | 显示全部楼层
sfqxx 发表于 2023-2-5 20:32
行,这种想法能理解,那么就加点奖励吧
(我也想要评分)

不 要!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-5 20:45:50 From FishC Mobile | 显示全部楼层
zhangjinxuan 发表于 2023-2-5 20:44
不 要!!!!!!

?您不是给我了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 08:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表