【ACWing】3626. 三元一次方程

编程入门 行业动态 更新时间:2024-10-21 15:37:15

【ACWing】3626. 三元一次<a href=https://www.elefans.com/category/jswz/34/1766651.html style=方程"/>

【ACWing】3626. 三元一次方程

题目地址:

/

给定一个整数 n n n,请你求出三元一次方程 3 x + 5 y + 7 z = n 3x+5y+7z=n 3x+5y+7z=n的一组非负整数解。要求:
1、 x ≥ 0 , y ≥ 0 , z ≥ 0 x≥0,y≥0,z≥0 x≥0,y≥0,z≥0
2、如果解不唯一,则输出 x , y , z x,y,z x,y,z字典序最小的解。

输入格式:
第一行包含一个整数 T T T,表示共有 T T T组测试数据。
每组数据占一行,包含一个整数 n n n。

输出格式:
每组数据输出一行结果,如果无解则输出 − 1 −1 −1,否则输出 x , y , z x,y,z x,y,z,整数之间单个空格隔开。

数据范围:
对于前三个测试点, 1 ≤ n ≤ 100 1≤n≤100 1≤n≤100。
对于全部测试点, 1 ≤ T ≤ 1000 1≤T≤1000 1≤T≤1000, 1 ≤ n ≤ 1000 1≤n≤1000 1≤n≤1000。

直接暴力枚举。代码如下:

#include <iostream>
using namespace std;int n, i, j, k;bool work() {for (i = 0; 3 * i <= n; i++)for (j = 0; 3 * i + 5 * j <= n; j++) {k = n - 3 * i - 5 * j;if (k % 7 == 0) return true;}return false;
}int main() {int T;scanf("%d", &T);while (T--) {scanf("%d", &n);if (!work()) puts("-1");else printf("%d %d %d\n", i, j, k / 7);}
}

时间复杂度 O ( n 2 ) O(n^2) O(n2),空间 O ( 1 ) O(1) O(1)。

更多推荐

【ACWing】3626. 三元一次方程

本文发布于:2023-06-29 10:46:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/943677.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:方程   ACWing

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!