給你一個(gè)從 n×n 的矩陣,里面填充 1 到 n×n 。例如當(dāng) n 等于 3 的時(shí)候,填充的矩陣如下。
1 2 34 5 67 8 9
現(xiàn)在我們把矩陣中的每條邊的中點(diǎn)連起來,這樣形成了一個(gè)新的矩形,請(qǐng)你計(jì)算一下這個(gè)新的矩形的覆蓋的數(shù)字的和。比如,n = 3 的時(shí)候矩形覆蓋的數(shù)字如下。
24 5 6 8
那么當(dāng) n 等于 101 的時(shí)候,矩陣和是多少?
題目解析:
這題畫一個(gè)7×7的矩陣觀察起來會(huì)比較直觀。矩形邊中點(diǎn)的連線包括邊上的 元素和所有處于邊界點(diǎn)之間的元素。在找準(zhǔn)行列關(guān)系之后就很簡單了。
填空答案如下:
#include <iostream>using namespace std;int main() {// cout << "/*請(qǐng)?jiān)谶@里填入答案*/" << endl; cout << "26020201" << endl; return 0;}
題解代碼如下:
#include <iostream>#include <cmath>using namespace std;int a[1000][1000];int main(){ int n; cin>>n; //n=101; int p=1; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ a[i][j]=p++; } } int m=n/2; int sum=0; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i<=m && j>=m-i && j<=m+i){ sum+=a[i][j]; }else if(i>m && j>=m-(n-i-1) && j<=m+(n-i-1)){ sum+=a[i][j]; } } } cout<<sum; return 0;}
用 0,1,2,3?7 這 8 個(gè)數(shù)組成的所有整數(shù)中,質(zhì)數(shù)有多少個(gè)(每個(gè)數(shù)字必須用到且只能用一次)。
提示:以 0 開始的數(shù)字是非法數(shù)字。
題目解析:
這題考察全排列,注意第一個(gè)數(shù)字不能是0。
填空答案如下:
#include <iostream>using namespace std;int main() {// cout << "/*請(qǐng)?jiān)谶@里填入答案*/" << endl; cout << "2668" << endl; return 0;}
題解代碼如下:
#include <iostream>#include <cmath>#include <algorithm>using namespace std;int isPrime(int n){ for(int i=2;i<=sqrt(n);i++){ if(n%i==0) return 0; } return 1;}int main(){ int cnt=0; int a[8]={0,1,2,3,4,5,6,7}; do{ if(a[0]==0) continue; int sum=0; for(int i=0;i<8;i++){ sum=sum*10+a[i]; } if(isPrime(sum)) cnt++; }while(next_permutation(a,a+8)); cout<<cnt; return 0;}
一個(gè)數(shù)的整數(shù)次冪,是我們?cè)谟?jì)算中經(jīng)常用到的,但是怎么可以在 O(log(n))
的時(shí)間內(nèi)算出結(jié)果呢?
代碼框中的代碼是一種實(shí)現(xiàn),請(qǐng)分析并填寫缺失的代碼,求 x^y mod p
的結(jié)果。
題目解析:
這題主要考察y & 1
。&是位與操作符,運(yùn)算法則是在二進(jìn)制數(shù)下,相同位的兩個(gè)數(shù)字都為1,則為1;若有一個(gè)不為1,則為0。y & 1
做位與操作,y&1是y和1做“按位與”運(yùn)算,1的二進(jìn)制只有末位是1,所以y & 1
就是只保留y的末位(二進(jìn)制)。y & 1
就表示了y的奇偶性。y & 1 == 1
為奇數(shù),反之為偶數(shù)。
填空答案如下:
#include <iostream>using namespace std;int pw(int x, int y, int p) { if (!y) { return 1; }// int res = /*在這里填寫必要的代碼*/; int res = pw(x,y-1,p)+pw(x,y-1,p)*!(y&1); if (y & 1) { //判斷奇偶數(shù),y&1==1為奇數(shù),反之為偶數(shù) res = res * x % p; } return res;}int main() { int x, y, p; cin >> x >> y >> p; cout << pw(x, y, p) << endl; return 0;}
N! 末尾有多少個(gè) 0 呢?
N! = 1 x 2 x ··· x N。
代碼框中的代碼是一種實(shí)現(xiàn),請(qǐng)分析并填寫缺失的代碼。
填空答案如下:
#include <iostream>using namespace std;int main() { int n, ans = 0; cin >> n; while (n) { //ans += /*在這里填寫必要的代碼*/; ans += n/=5; } cout << ans << endl; return 0;}
聯(lián)系客服