【CODE[VS]】3943 数学奇才琪露诺 (月赛round1)

作者回顾了自己从一个名为wikioi的网站开始的OI之旅,并分享了一个关于数字和的编程问题解决方案,通过枚举状态数最少的环节来解决环形过程问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

传送门:http://codevs.cn/problem/3943/

这份代码不是现在写的……
有些事情好怀念啊……
13年我的生日那天,我的OI旅途从一个叫wikioi的网站开始了。
到现在那封邮箱认证还静静地躺在我邮箱的最后,一直舍不得删。
有很多的东西变了。

以下为正题:
因为整个过程是一个环,并且对于某个操作某个状态有唯一对应的全过程(或者不存在)
所以从状态数最少的环节入手(数字和),枚举即可

var k,p,q,l,r,i,ans,a:longint;
    an:array[1..100] of longint;
function pow(a,k:longint):longint;
begin
    pow:=1;
    while k>0 do begin
        if k and 1=1 then pow:=pow*a;
        a:=sqr(a);
        k:=k>>1;
    end;
end;
function sw(a:longint):longint;
var s:string;
    b,i:longint;
begin
    str(a,s);
    sw:=0;
    for i:=1 to length(s) do begin
        val(s[i],b);
        inc(sw,b);
    end;
end;
begin
    readln(k,p,q);
    readln(l,r);
    for i:=1 to 81 do begin
        a:=pow(i,k)*p+q;
        if (sw(a)=i) and (l<=a) and (r>=a) then begin
            inc(ans);
            an[ans]:=a;
        end else if a>r then break;
    end;
    writeln(ans);
    for i:=1 to ans do write(an[i],' ');
end.
### Pandas 中 `unstack()` 方法将列索引转换为行索引的使用说明 `unstack()` 是 Pandas 提供的一种数据重塑方法,主要用于将多层索引中的行索引旋转为列索引。通过该方法,可以实现从行到列的维度转换,从而更方便地进行数据分析和可视化[^4]。 #### 1. 基本概念 `unstack()` 的核心功能是将 Series 或 DataFrame 中的行索引转换为列索引。如果数据具有多层索引(MultiIndex),则可以通过指定 `level` 参数来选择需要解栈的具体层级。默认情况下,`level=-1`,即最内层的索引会被解栈。 #### 2. 使用方式 以下是 `unstack()` 的基本语法: ```python DataFrame.unstack(level=-1, fill_value=None) ``` - **level**: 指定需要解栈的层级,默认值为 `-1`,表示最内层索引。 - **fill_value**: 用于替换缺失值的值。如果未指定,则默认为 `NaN`。 #### 3. 示例代码 以下是一个完整的示例,展示如何使用 `unstack()` 将列索引转换为行索引: ```python import pandas as pd # 创建一个示例 DataFrame data = { "姓名": ["古明地觉", "", "芙兰朵"], "科目": ["数学", "英语", "语文"], "分数": [95, 91, 87] } df = pd.DataFrame(data) # 将"姓名"和"科目"设置为索引,并提取"分数"列 two_level_index_series = df.set_index(["姓名", "科目"])["分数"] print("原始 Series 数据:") print(two_level_index_series) # 使用 unstack() 将二级索引转换为列 new_df = two_level_index_series.unstack() print("\n使用 unstack() 后的数据:") print(new_df) ``` 运行结果如下: ``` 原始 Series 数据: 姓名 科目 古明地觉 数学 95 英语 91 芙兰朵 语文 87 使用 unstack() 后的数据: 科目 数学 英语 语文 姓名 古明地觉 95.0 NaN NaN NaN 91.0 NaN 芙兰朵 NaN NaN 87.0 ``` #### 4. 处理多级索引 当数据具有多层索引时,可以指定 `level` 参数来控制哪一层索引被解栈。例如: ```python # 创建一个多层索引的 Series tuples = [ ("first", "one"), ("first", "two"), ("second", "one"), ("second", "two") ] index = pd.MultiIndex.from_tuples(tuples, names=["level_1", "level_2"]) series = pd.Series([1, 2, 3, 4], index=index) print("原始多层索引 Series 数据:") print(series) # 对第一层索引进行解栈 unstacked_data = series.unstack(level=0) print("\n对第一层索引解栈后的数据:") print(unstacked_data) ``` 运行结果如下: ``` 原始多层索引 Series 数据: level_1 level_2 first one 1 two 2 second one 3 two 4 对第一层索引解栈后的数据: level_2 first second level_1 one 1.0 3.0 two 2.0 4.0 ``` #### 5. 替换缺失值 在某些情况下,`unstack()` 可能会导致数据中出现缺失值(`NaN`)。可以通过 `fill_value` 参数来替换这些缺失值: ```python # 使用 fill_value 参数替换 NaN filled_unstacked_data = series.unstack(level=0, fill_value=0) print("\n使用 fill_value 参数替换 NaN 后的数据:") print(filled_unstacked_data) ``` 运行结果如下: ``` 使用 fill_value 参数替换 NaN 后的数据: level_2 first second level_1 one 1 3 two 2 4 ``` #### 6. 注意事项 - 如果数据结构过于复杂,可能需要结合 `stack()` 和 `unstack()` 来完成特定的重塑需求。 - 在调用 `unstack()` 后,可能会生成新的多层索引结构,需要根据实际情况调整数据格式。 - 如果需要将索引重置为普通列,可以使用 `reset_index()` 方法[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值