3 2常用技巧練習

2021-07-26 08:33:40 字數 2707 閱讀 2201

links:

求給定數字能表示成多少組質數之和,如47可以表示成2+3+5+7+11+13, 11+13+17, 41這三組。

先處理質數,然後尺取法。

#include

#include

#include

#include

using

namespace

std;

int prim[10000];

int primnum;

void isprim()

}if (is)

}}int main()

else

if(sumelse

if (sum>n)

}printf("%d\n", ans);

}return

0;}

問給定數字能表示成多少組連續數字的平方和。

如:2030=25^2+26^2+27^2

=21^2+22^2+23^2+24^2

也是尺取法,一開始用陣列存答案,不知為何會超時,後來看別人的改用stl容器和pair存答案就過了。

#include

#include

#include

#include

#include

using

namespace

std;

vector

long

long, long

long> > ans;

//int ans[1000];

//int ans2[1000];

int ansnum;

int main()

else

if (sum < n)

else

}ansnum = ans.size();

printf("%d\n", ansnum);

for (int i = 0; i < ansnum; i++)

puts("");}}

return

0;}

翻水杯,每次翻動會把左右兩邊的水杯翻轉,為了不影響前面已經翻好的水杯,每當有乙個水杯是1,就翻它後面那乙個就行,分別從左邊翻和右邊翻,最小值為答案。

#include

#include

using

namespace

std;

bool line[21];

bool line2[21];

int main()

int ans = 0;

int ans1 = 0;

for (int i = 0; i < 20; i++)

}for (int i = 20; i >= 1; i--)

}cout

<< (ansreturn

0;}

二維版翻水杯,每次翻動會使上下左右四個都翻轉,演算法書上有講過,列舉第一排的翻轉方式,就可以確定下面的翻轉,最後遍歷看有沒有全部翻轉正確,得出答案。

#include

#include

#include

#include

using

namespace

std;

intmap[7][8];

int ans[7][8];

int bmap[7][8];

bool cal(int k)

}for (int j = 1; j <= 6; j++)

}for (int i = 2; i <= 5; i++)}}

for (int i = 1; i <= 5; i++)}}

return

true;

}int main()

}for (int i = 0; i < 64;i++)

}printf("puzzle #%d\n", t + 1);

for (int i = 1; i <= 5; i++)

else}}

}return

0;}

在給定數列裡找出滿足a+b+c=d。的最大的d

題解是變成a+b=d-c,滿足c>a>b但是由於數字有正有負,所以d可能比abc都小。

所以列舉d和c,尺取法找a和b。

c從2開始列舉

#include

#include

#include

#include

using

namespace

std;

int num[1005];

int main()

sort(num, num + n);

int sum,ans;

bool y = false;

for (int i = n - 1; i >=0; i--)

sum = num[i] - num[j];

int b = j - 1, a = 0;

while (a < b)

else

if (sum > num[a] + num[b])

else

}if (y == true)break;

}if (y == true)break;

}if (y == false)

else

}return

0;}

SICP練習 32 練習1 38

練習1.38 我最喜歡做數學上的觀察題了,這裡也有乙個di,其依次為1,2,1,1,4,1,1,6,1,1,8 我最先看到的是除了一開始的2個之外,每三個數字的規律是前面是兩個1,後面是個遞增的偶數。於是我們便可輕而易舉的寫出這個函式了。define d i if remainder i 2 3 0...

TRACE32除錯技巧

1.除錯步驟 l 連線好 trace32 icd 和目標板,注意不要帶電插拔 jtag 容易損壞 trace32 或目標板,然後依次開啟 trace32 icd 和目標板的電源。l 開啟除錯軟體 trace32 l 設定 cpu 型別,狀態等,可以通過命令或選單,命令如下 sys.reset sys...

Day3 2if語句練習

1.寫出判斷乙個數是否能夠同時被3和7整除的語句,並且列印輸出結果 num int input 請輸入數字 if num 3 0and num 7 0 print num else print 傻子,不可以 2.寫出判斷乙個數是否能被3或者7整除,但是不能同時被3或7整除的條件語句,並列印出對應的結...