鱼C论坛

 找回密码
 立即注册
查看: 1443|回复: 14

[已解决]python分数

[复制链接]
发表于 2020-8-9 15:59:09 | 显示全部楼层 |阅读模式

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

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

x
分数
共 5 个测试点  每个测试点 20 分

每个测试点限时 3 秒  运行内存上限 512MB

查看本题最近一次测评结果

一个序列有 nn 个数,编号 1\dots n1…n ,最初第 ii 个数是 \frac 1 i
i
1
​       
(i\in[1,n]i∈[1,n])。每次选取编号最小且分母不为 11 的分数,设这个分数为 \frac p q
q
p
​       
  ,令所有分数都乘上 qq 并化简,重复这个过程直到所有数分母均为 11 。

你需要按顺序求出每次操作乘上的数 qq 。

为了减少输出量,采用如下输出方式:给定两个整数 a,ba,b ,对于每次操作的 qq ,执行 a=a\times q+ba=a×q+b ,最后输出 aa 对 2^{32}2
32
  取模的值。

输入格式
一行三个正整数 n, a, bn,a,b 。

输出格式
一行一个整数,表示答案。

数据范围与约定
对于 20\%20% 的数据,保证 n\leq 7n≤7 。

对于 40\%40% 的数据,保证 n\leq 5000n≤5000 。

对于 60\%60% 的数据,保证 n\leq 50000n≤50000 。

对于 100\%100% 的数据, 0< n\leq 8\times 10^70<n≤8×10
7
  , 0< a,b< 2^{32}0<a,b<2
32
  。

样例输入
4 2 3
样例输出
51
样例解释
初始 a=2,b=3a=2,b=3 ,序列为:

1\quad\frac 1 2\quad\frac 1 3\quad\frac 1 4
1
2
1
&#8203;       
  
3
1
&#8203;       
  
4
1
&#8203;       

第一次操作 q=2q=2 ,执行 a=a\times q+ba=a×q+b 后 a=7a=7 ,序列变为:

2\quad 1\quad\frac 2 3\quad\frac 1 2
21
3
2
&#8203;       
  
2
1
&#8203;       

第二次操作 q=3q=3 ,执行 a=a\times q+ba=a×q+b 后 a=24a=24 ,序列变为:

6\quad 3\quad 2\quad\frac 3 2
632
2
3
&#8203;       

第三次操作 q=2q=2 ,执行 a=a\times q+ba=a×q+b 后 a=51a=51 ,序列变为:

12\quad 6\quad 4\quad 3
12643
此时所有数分母均为 11 ,过程结束。
最佳答案
2020-8-10 11:08:33
陈尚涵 发表于 2020-8-10 10:48
这个用Java写效率会更快
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdint.h>



uint64_t gcd(uint64_t a, uint64_t b) {
    uint64_t c;

    while (b) {
        c = a % b;
        a = b;
        b = c;
    }

    return a;
}



int main() {
    uint32_t n, a, b, num, temp;
    uint64_t product = 1;

    scanf("%u%u%u", &n, &a, &b);


    for (num = 1; num <= n; num++) {
        if (product % num) {
            temp = num / gcd(num, product);
            product *= temp;
            a *= temp;
            a += b;
        }
    }


    printf("%u", a);
    return 0;
}
2020-08-09 (7).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-9 15:59:29 | 显示全部楼层
这是……??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-9 16:29:23 | 显示全部楼层
兄弟,我看你题目看得好苦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 16:38:04 | 显示全部楼层
题目原题
2020-08-09 (9).png
2020-08-09 (7).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 17:15:18 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-9 17:17:04 | 显示全部楼层
但是确实超时了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 17:18:36 | 显示全部楼层
zzzyf 发表于 2020-8-9 17:17
但是确实超时了


麻烦回复啊不然我看不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-9 17:19:12 | 显示全部楼层
zzzyf 发表于 2020-8-9 17:17
但是确实超时了

我能用 C 语言写吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-9 17:20:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-9 20:03:05 | 显示全部楼层

试试这个:
from math import gcd

n, a, b = map(int, input().split())
num = product = 1


while num <= n:
    if product % num:
        temp = num // gcd(num, product)
        product *= temp
        a = (a * temp + b) % 4294967296

    num += 1


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

使用道具 举报

发表于 2020-8-10 10:48:00 | 显示全部楼层

这个用Java写效率会更快
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

发表于 2020-8-10 10:49:40 | 显示全部楼层
陈尚涵 发表于 2020-8-10 10:48
这个用Java写效率会更快

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

使用道具 举报

发表于 2020-8-10 11:08:33 | 显示全部楼层    本楼为最佳答案   
陈尚涵 发表于 2020-8-10 10:48
这个用Java写效率会更快
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdint.h>



uint64_t gcd(uint64_t a, uint64_t b) {
    uint64_t c;

    while (b) {
        c = a % b;
        a = b;
        b = c;
    }

    return a;
}



int main() {
    uint32_t n, a, b, num, temp;
    uint64_t product = 1;

    scanf("%u%u%u", &n, &a, &b);


    for (num = 1; num <= n; num++) {
        if (product % num) {
            temp = num / gcd(num, product);
            product *= temp;
            a *= temp;
            a += b;
        }
    }


    printf("%u", a);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-10 14:50:01 | 显示全部楼层
谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 11:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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