用尤拉計劃題目來學q語法
題目1:找出1000以下自然數中3和5的倍數之和。
10以下的自然數中,屬於3和5的倍數的有3,5,6和9,它們之和是23.
找出1000以下的自然數中,屬於3和5的倍數的數字之和。
思路1:
逐個列舉,判斷,累加。
q)s:0
q)do[n:999;if[0=(n mod 3) &(n mod 5);s:s+n];n:n-1] //這裡&符號表示求最小值
q)s
233168
思路2:
利用等差數列和的公式。
3的倍數+5的倍數-15的倍數。
q)f:{"j"$(x+x*floor 999%x)*(floor 999%x)%2} //"j"$將結果用長整數表示
q)f[3]+f[5]-f[15]
233168
思路3:
篩法,第1次掃描,標出所有3的倍數,第2次,標出所有5的倍數。最後,將標記的數累加。
q)d:(3 5) //要求的倍數的列表
q)a:1+til 1000 //初始化1000個數,第一個位置(索引下標為0)空著不用。
q)do[k:count d;k:k-1;do[n:floor 999%d[k];a[d[k]*n]:0;n:n-1]] //把a中的元素是d列表元素的倍數的位置置0
q)s:0
q)do[n:1000;n:n-1;if[0=a[n];s:s+n]] //累計
q)s
233168
大神的思路:
sum w where n>=w:asc distinct raze (1+til n:999)*/:3 5 //raze把多層展平為1層
sum asc distinct raze l*1+til each -1 + ceiling n:1000 %l:3 5
相關文章
- 尤拉計劃512題(冪的尤拉總計函式和)函式
- 尤拉計劃595題:增量隨機排序隨機排序
- 尤拉計劃425題:質數連線
- 尤拉計劃605題:結對投幣遊戲遊戲
- 尤拉計劃463題:奇怪的遞迴關係遞迴
- [Project Euler] 來做尤拉專案練習題吧: 題目007Project
- 尤拉計劃533題:卡邁克爾函式函式
- 000. 尤拉計劃簡介
- 尤拉計劃695:隨機長方形隨機
- 尤拉計劃717:取模公式之和公式
- 尤拉計劃433題:歐幾里德演算法的步數演算法
- 對尤拉計劃427題(n-序列) 的一些分析
- 尤拉計劃697:隨機衰減序列隨機
- 尤拉計劃713:圖蘭熱水系統
- 尤拉計劃386題(反鏈的最大長度) 論壇python解法學習筆記Python筆記
- 尤拉計劃386題(反鏈的最大長度) 論壇c++解法學習筆記C++筆記
- 近期的學習計劃和目標
- 尤拉計劃711:二進位制黑板
- 尤拉計劃701:隨機連線區域隨機
- web安全學習目標與計劃的制定Web
- 獲得目標SQL語句執行計劃的方法SQL
- 用sql profile來固定執行計劃SQL
- 一個老程式設計師未來10年的計劃目標程式設計師
- 利用容斥原理求尤拉計劃565題的S(1E9,2017)
- 用DBMS_XPLAN來展示執行計劃
- makefile--偽目標語法與程式設計例項程式設計
- 尤拉計劃287題:四分樹編碼(一個簡單的壓縮演算法)演算法
- 語法問題
- 德語語法快速學
- 入門計劃->學用stl std::map (轉)
- 學會用經驗計劃專案(轉)
- python 學習筆記(一)通過做題來熟悉python 的基本語法Python筆記
- 學習計劃:
- 學習計劃
- 用Kolb學習模型來學程式設計模型程式設計
- 動態規劃分類題目總結動態規劃
- 未來的健身計劃 更加科學 更加健康 更加智慧
- goroutine 語法問題Go