2018第九届蓝桥杯C/C++ B国赛 —— 第六题:矩阵求和
生活随笔
收集整理的這篇文章主要介紹了
2018第九届蓝桥杯C/C++ B国赛 —— 第六题:矩阵求和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
矩陣求和
經過重重筆試面試的考驗,小明成功進入 Macrohard 公司工作。
今天小明的任務是填滿這么一張表:
表有 n 行 n 列,行和列的編號都從1算起。
其中第 i 行第 j 個元素的值是 gcd(i, j)的平方,
gcd 表示最大公約數,以下是這個表的前四行的前四列:
1 1 1 1
1 4 1 4
1 1 9 1
1 4 1 16
小明突然冒出一個奇怪的想法,他想知道這張表中所有元素的和。
由于表過于龐大,他希望借助計算機的力量。
「輸入格式」
一行一個正整數 n 意義見題。
「輸出格式」
一行一個數,表示所有元素的和。由于答案比較大,請輸出模 (10^9 + 7)(即:十億零七) 后的結果。
「樣例輸入」
4
「樣例輸出」
48
「數據范圍」
對于 30% 的數據,n <= 1000
存在 10% 的數據,n = 10^5
對于 60% 的數據,n <= 10^6
對于 100% 的數據,n <= 10^7
資源約定:
峰值內存消耗(含虛擬機) < 256M
CPU消耗 < 2000ms
代碼
暴力解法
#include <iostream> #include <cmath> using namespace std; int gcd(int i,int j) {if (j==0) return i;return gcd(j,i%j); } int main() {int n;cin>>n;int sum=0;for (int l = 1; l <= n; ++l)sum+=pow(l,2);for (int i = 1; i <= n; ++i)for (int j = 1; j < i; ++j)sum+=2*pow(gcd(i,j),2);cout<<sum<<endl;return 0; }總結
以上是生活随笔為你收集整理的2018第九届蓝桥杯C/C++ B国赛 —— 第六题:矩阵求和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017/Province_Java_B
- 下一篇: 2019年第十届蓝桥杯 - 省赛 - C