鱼C论坛

 找回密码
 立即注册
楼主: zhangjinxuan

[已解决]【C++板块提升计划】梦想护卫舰 第18关 解密(2)【原创】【答题有奖】

[复制链接]
发表于 2023-1-30 17:50:11 | 显示全部楼层
zhangjinxuan 发表于 2023-1-30 17:39
我都开 long long 了,结果还是不一样

多写了一个“#”号
  1. def prime():
  2.     global primes
  3.     def is_prime(n):
  4.         if n<2: return False
  5.         return all(n%i for i in range(2, int(n**0.5+1)))
  6.     primes = [i for i in range(int(1e9**0.5+2)) if is_prime(i)]
  7. def count(yinshu, exp_2):
  8.     if exp_2 == 0: return yinshu // 2 + yinshu % 2
  9.     if exp_2 == 1: return 0
  10.     s = (yinshu // 2) * (exp_2-1)
  11.     s += (yinshu % 2) * (exp_2 // 2)
  12.     return s

  13. def count_yinshu(n):
  14.     try:
  15.         #print(n, end = ' ')
  16.         i = 1
  17.         yinshu = dict()
  18.         while n != 1:
  19.             if n < primes[i] and n != 1: return 2
  20.             while n % primes[i] == 0:
  21.                 # print(n)
  22.                 yinshu[primes[i]] = yinshu.get(primes[i], 0) + 1
  23.                 n = n // primes[i]
  24.             i += 1
  25.         s = 1
  26.         for i in yinshu:
  27.             s *= (yinshu[i]+1)
  28.         #print(s)
  29.         return s
  30.     except:
  31.         return 2
  32. def count_2_exp(n):
  33.     exp_2 = 0
  34.     while not n % 2:
  35.         n //= 2
  36.         exp_2 += 1
  37.     return exp_2, n

  38. def count_n(n):
  39.     exp_2, new_n = count_2_exp(n)
  40.     return count(count_yinshu(new_n), exp_2)

  41. input()
  42. n = list(map(int, input().split()))
  43. #import time
  44. #start = time.time()
  45. prime()
  46. for i in n:
  47.     print(count_n(i), end = ' ')
  48. #end = time.time()
  49. #print('\n', start - end, sep = '')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-30 17:59:26 From FishC Mobile | 显示全部楼层
如果你敢听小怪的话,直接看答案,那么你的剩余积分和梦想币将会…
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-30 18:02:33 | 显示全部楼层
高山 发表于 2023-1-30 17:59
如果你敢听小怪的话,直接看答案,那么你的剩余积分和梦想币将会…

那你不也是发完了这个帖子就能直接看答案了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-30 18:13:40 | 显示全部楼层
高山 发表于 2023-1-30 17:59
如果你敢听小怪的话,直接看答案,那么你的剩余积分和梦想币将会…

我 这 题 很 难 吗
就是一个平方差公式而已啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-30 18:14:00 | 显示全部楼层
tommyyu 发表于 2023-1-30 18:02
那你不也是发完了这个帖子就能直接看答案了

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

使用道具 举报

 楼主| 发表于 2023-1-30 18:20:04 | 显示全部楼层
tommyyu 发表于 2023-1-30 18:02
那你不也是发完了这个帖子就能直接看答案了

您的代码还是存在问题:
  1. 1
  2. 9376455
复制代码

你的输出:
  1. 1
复制代码

标程输出:
  1. 8
复制代码

连接证明:https://zh.numberempire.com/9376455
如果您认为标程、题解有错误,请回帖指明错误,核实会有更丰厚的奖励!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-30 18:20:23 | 显示全部楼层
zhangjinxuan 发表于 2023-1-30 18:13
我 这 题 很 难 吗
就是一个平方差公式而已啊

我这题过了没
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-30 18:20:43 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-30 18:23:44 | 显示全部楼层

鱼油们个个都是“人才”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-30 18:26:53 | 显示全部楼层
zhangjinxuan 发表于 2023-1-30 18:20
https://fishc.com.cn/forum.php?mod=redirect&goto=findpost&ptid=223880&pid=6130703

改完了
  1. def prime():
  2.     global primes
  3.     def is_prime(n):
  4.         if n<2: return False
  5.         return all(n%i for i in range(2, int(n**0.5+1)))
  6.     primes = [i for i in range(int(1e9**0.5+2)) if is_prime(i)]
  7. def count(yinshu, exp_2):
  8.     # print(yinshu, exp_2)
  9.     if exp_2 == 0: return yinshu // 2 + yinshu % 2
  10.     if exp_2 == 1: return 0
  11.     s = (yinshu // 2) * (exp_2-1)
  12.     s += (yinshu % 2) * (exp_2 // 2)
  13.     return s

  14. def count_yinshu(n):
  15.     #print(n, end = ' ')
  16.     i = 1
  17.     yinshu = dict()
  18.     try:
  19.         while n != 1:
  20.             if n < primes[i] and n != 1: return 2
  21.             while n % primes[i] == 0:
  22.                 # print(n)
  23.                 yinshu[primes[i]] = yinshu.get(primes[i], 0) + 1
  24.                 n = n // primes[i]
  25.             i += 1
  26.     except:
  27.         yinshu[n] = 1
  28.     s = 1
  29.     for i in yinshu:
  30.         s *= (yinshu[i]+1)
  31.     return s

  32. def count_2_exp(n):
  33.     exp_2 = 0
  34.     while not n % 2:
  35.         n //= 2
  36.         exp_2 += 1
  37.     return exp_2, n

  38. def count_n(n):
  39.     exp_2, new_n = count_2_exp(n)
  40.     return count(count_yinshu(new_n), exp_2)

  41. input()
  42. n = list(map(int, input().split()))
  43. #import time
  44. #start = time.time()
  45. prime()
  46. for i in n:
  47.     print(count_n(i), end = ' ')
  48. #end = time.time()
  49. #print('\n', start - end, sep = '')
复制代码

评分

参与人数 1鱼币 +5 收起 理由
zhangjinxuan + 5 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2023-1-30 18:34:02 | 显示全部楼层

恭喜100分,居然1秒以内就跑完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-30 22:57:43 | 显示全部楼层
平方根是小数怎么办?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-30 23:23:13 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sfqxx 于 2023-1-31 17:18 编辑
zhangjinxuan 发表于 2023-1-30 15:23
嘿嘿嘿,还是数学题难


直接按照题解思路做不就得了吗?
肝了100分钟,修复了30分钟bug
可算做出来了
因为Scratch难做,所以运行正确可以给我最佳答案吗?(因为tommyu已经够多了,反正这次是第一)
嘿嘿,顺便赚一丢丢鱼币(附件购买)
如果超时间没关系吧(偶数需要30秒,不过奇数可以快点)(这是最新版,之前的会超时) Scratch作品.zip (45.58 KB, 下载次数: 0, 售价: 4 鱼币)
下载直接改扩展名就好了(sb3)

Scratch作品.zip

45.51 KB, 下载次数: 5

售价: 4 鱼币  [记录]

1

点评

改代码ing  发表于 2023-1-31 16:54

评分

参与人数 1荣誉 +2 鱼币 +3 收起 理由
zhangjinxuan + 2 + 3

查看全部评分

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

使用道具 举报

 楼主| 发表于 2023-1-30 23:36:06 | 显示全部楼层
sfqxx 发表于 2023-1-30 23:23
直接按照题解思路做不就得了吗?
肝了100分钟,修复了30分钟bug
可算做出来了

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

使用道具 举报

 楼主| 发表于 2023-1-30 23:38:06 From FishC Mobile | 显示全部楼层
sfqxx 发表于 2023-1-30 23:23
直接按照题解思路做不就得了吗?
肝了100分钟,修复了30分钟bug
可算做出来了

明天再看哈,今天有点晚了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-30 23:40:31 From FishC Mobile | 显示全部楼层
sfqxx 发表于 2023-1-30 23:23
直接按照题解思路做不就得了吗?
肝了100分钟,修复了30分钟bug
可算做出来了

不过scratch的测评很复杂,所以可能要测评20分钟左右,测评正确就给你吧,因为tommyyu在领另一个这个问题的帖子得到最佳了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-31 09:41:31 | 显示全部楼层
sfqxx 发表于 2023-1-30 23:23
直接按照题解思路做不就得了吗?
肝了100分钟,修复了30分钟bug
可算做出来了

测评得分:30分
Extra Test: 未测试
第一个错误的数据:
  1. 1
  2. 8
  3. 10
复制代码

你的程序:
  1. 1
  2. 1.5
复制代码

标程输出:
  1. 1
  2. 0
复制代码

原因:
结果变量在每一轮循环之前要初始化为 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-31 09:46:54 | 显示全部楼层

这样,因为最佳答案已经给您了(另一个帖子),要不这个帖子的最佳答案就给别人吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-31 09:47:32 | 显示全部楼层
zhangjinxuan 发表于 2023-1-31 09:46
这样,因为最佳答案已经给您了(另一个帖子),要不这个帖子的最佳答案就给别人吧

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

使用道具 举报

 楼主| 发表于 2023-1-31 09:50:10 | 显示全部楼层
sfqxx 发表于 2023-1-30 23:23
直接按照题解思路做不就得了吗?
肝了100分钟,修复了30分钟bug
可算做出来了

只要大于60分,我就给你~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 20:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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