A.根号2
链接:http://acm.fzu.edu.cn/problem.php?pid=2317

思路:根据题目中的公式写出a1,a2,a3分别与a0相减 观察得到任意ai与a0相减答案都是2*i,数据较大,开longlong
代码如下:
#include<iostream>
using namespace std;
typedef long long ll;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    ll K;
    while(cin>>K){
        cout<<2*K<<endl;
    }
    return 0;
}
B.矩阵
思路:先直接暴力求得主对角线元素和,在根据题目要求减去修改之前那一点的值然后加上修改之后的值。如果修改的是方阵a,则ans -= a[x][y]*b[y][x];a[x][y] = v;ans+=a[x][y]*b[y][x]‘如果修改的是方阵b同理。
代码如下:
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <vector>
#include <string.h>
using namespace std;
typedef long long ll;
ll a[1005][1005],b[1005][1005],c[1005][1005];
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int n,q;
	while(cin >> n >> q)
	{
		for(int i = 1; i <= n; i++)
		{
			for(int j = 1; j <= n; j++)
			{
				cin >> a[i][j];
			}
		}
		for(int i = 1; i <= n; i++)
		{
			for(int j = 1; j <= n; j++)
			{
				cin >> b[i][j];
			}
		}ll ans = 0;
		for(int i = 1; i <= n; i++)
			{
			for(int j = 1; j <= n; j++)
				{
				ans+=a[i][j]*b[j][i];
			 	} 
			}
			
		while(q--)
		{
			int k, x, y, v; cin >> k >> x >> y >>v;
			
			if(!k) 
			{
				ans -= a[x][y]*b[y][x];
				a[x][y] = v;
				ans+=a[x][y]*b[y][x];
			}
			else 
			{
				ans -= b[x][y]*a[y][x];
				b[x][y] = v;
				ans+=b[x][y]*a[y][x];
			}
			cout << ans << endl;
		}
		
	}
	return 0;
 }