問題 B: Equation------------------------枚舉

題目描述
求方程 a1x1−a2x2+a3x3−a4x4+a5x5−a6x6=0在 xi∈[1,k]內有多少組正整數解。
輸入
一行七個整數 k,a1,a2,a3,a4,a5,a6。
輸出
一行一個整數,原方程有多少正整數解。
樣例輸入 Copy
10 -24 74 -25 22 -7 -22
樣例輸出 Copy
5
提示
對於100%的數據,1≤k≤600,−105≤ai≤105。

解析:
把式子轉換一下
a1x1+a3x3+a5x5=a2x2+a4x4+a6x6

先預處理左邊的,枚舉左邊的,用map記錄答案出現的次數
再枚舉右邊,累加答案出現的次數

#include<bits/stdc++.h>
using namespace std;
int k,a1,a2,a3,a4,a5,a6;
map<int,int> v;
int main()
{
	cin>>k>>a1>>a2>>a3>>a4>>a5>>a6;
	for(int i=1;i<=k;i++)
		for(int j=1;j<=k;j++)
			for(int m=1;m<=k;m++)
			{
				int ans=a1*i+a3*j+a5*m;
				v[ans]++; 
			}
	int sum=0;
	for(int i=1;i<=k;i++)
		for(int j=1;j<=k;j++)
			for(int m=1;m<=k;m++)
			{
				int ans=a2*i+a4*j+a6*m;
				sum+=v[ans];
			}
	cout<<sum<<endl;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章