6 solutions
-
7
感谢npr123f
#include<bits/stdc++.h> using namespace std; int a, b, d, e;//已知数 int c, f, g, h, i;//未知数 int h1, h2, h3, w1, w2, w3; int sum=0; int main() { cin>> h1 >> h2 >> h3 >> w1 >> w2 >> w3; for(a = 1; a <= 28; a++) { for(b = 1; b <= 28; b++) { for(d = 1; d <= 28;d++) { for(e = 1; e <= 28;e++) { c=h1-a-b; f=h2-d-e; h=w2-b-e; g=w1-a-d; i=h3-g-h; if(i+c+f==w3 && c>0 && f>0 && h>0 && g>0 && i>0) { sum++; } } } } } cout<<sum; return 0; }
-
4
#include <bits/stdc++.h> using namespace std; int a, b, d, e, c, f, i, h, g, h1, h2, h3, w1, w2, w3, cnt; int main() { cin >> h1 >> h2 >> h3 >> w1 >> w2 >> w3; // 4层for循环,不会超时,但爽啊!!! for (a = 1; a < min(h1, w1); a++) { for (b = 1; b < min(h1, w2); b++) { for (d = 1; d < min(h2, w1); d++) { for (e = 1; e < min(h2, w2); e++) { // 把每种数字算出来 c = h1 - a - b; f = h2 - d - e; h = w2 - b - e; g = w1 - a - d; i = h3 - g - h; // 换成正数,用绝对值即可 // 注意:if (!c) 等同于 if (c == 0) c = abs(c); if (!c) c = 1; f = abs(f); if (!f) f = 1; h = abs(h); if (!h) h = 1; g = abs(g); if (!g) g = 1; i = abs(i); if (!i) i = 1; // 判断一波 (好长的代码) // 然后累加起来就是答案了 if (a + b + c == h1 && d + e + f == h2 && g + h + i == h3 && a + d + g == w1 && b + e + h == w2 && c + f + i == w3) cnt++; } } } } cout << cnt << endl; // 输出答案 return 0; }
-
-1
想了好久👀️ !终于做出来了!😄
不要用暴力!!! ------ 会超时 先看方法: a b c d e f g h i 先把a,b,d,e算出来先(用四重for循环!算(不会超时的))(结束范围用min()) 再推断c,f,i,h,g的数字 一定要取它的正整数(不为负数与0) 再判断(合格就统计) 最后输出
所以代码:
#include<bits/stdc++.h> using namespace std; int a,b,d,e,c,f,i,h,g,h1,h2,h3,w1,w2,w3,s=0; bool fun()//判断是否合格 { //这段真长 if(a+b+c==h1 && d+e+f==h2 && g+h+i==h3 && a+d+g==w1 && b+e+h==w2 && c+f+i==w3) { return true; } else { return false; } } int main() { cin>>h1>>h2>>h3>>w1>>w2>>w3;//输入 //四重for循环,还好,不会超时 for(a=1;a<min(h1,w1);a++) { for(b=1;b<min(h1,w2);b++) { for(d=1;d<min(h2,w1);d++) { for(e=1;e<min(h2,w2);e++) { //把每种数字算出来 c=h1-a-b; f=h2-d-e; h=w2-b-e; g=w1-a-d; i=h3-g-h; //换成正整数 c=abs(c);if(c==0)c=1; f=abs(f);if(f==0)f=1; h=abs(h);if(h==0)h=1; g=abs(g);if(g==0)g=1; i=abs(i);if(i==0)i=1; if(fun())//是否合格(像你期盼的AC一样) { s++;//统计 } } } } } cout<<s;//输出 return 0;//完结散花! }
hmz的问题已修改
-
-2
蘸豆爽
/* w1 w2 w3 h1 a b c h2 d e f h3 g h i */ #include<iostream> using namespace std; int a,b,c,d,e,f,g,h,i; int cnt; int h1,h2,h3,w1,w2,w3; int main(){ cin>>h1>>h2>>h3>>w1>>w2>>w3; for(a=1;a<=28;a++){ for(c=1;c<=29-a;c++){ for(g=1;g<=29-a;g++){ for(i=1;i<=28;i++){ d=w1-a-g; f=w3-c-i; b=h1-a-c; h=h3-g-i; e=w2-b-h; if(d<=0||f<=0||b<=0||h<=0||e<=0) continue; if(d+e+f==h2) cnt++; } } } } cout<<cnt; return 0; }
-
-3
四层for优化
#include<cstdio> int a[3][3],sum[6],cnt=0; int main() { for(int i=0;i<6;++i) scanf("%d",&sum[i]); // for(int i=0;i<6;++i) // printf("%d ",sum[i]); // printf("\n"); for(a[0][0]=1;a[0][0]<=sum[0];++a[0][0]) { for(a[0][1]=1;a[0][1]<=sum[0];++a[0][1]) { for(a[1][0]=1;a[1][0]<=sum[1];++a[1][0]) { for(a[1][1]=1;a[1][1]<=sum[1];++a[1][1]) { // for(a[2][0]=1;a[2][0]<=27;++a[2][0]) // { // for(a[2][1]=1;a[2][1]<=27;++a[2][1]) // { a[0][2]=sum[0]-a[0][0]-a[0][1]; a[1][2]=sum[1]-a[1][0]-a[1][1]; a[2][0]=sum[3]-a[0][0]-a[1][0]; a[2][1]=sum[4]-a[0][1]-a[1][1]; a[2][2]=sum[5]-a[0][2]-a[1][2]; // for(int i=0;i<3;++i) // { // for(int j=0;j<3;++j) // printf("%d ",a[i][j]); // printf("\n"); // } // printf("\n"); if(a[2][0]+a[2][1]+a[2][2]==sum[2]&&a[2][0]>0&&a[2][1]>0&&a[2][2]>0&&a[0][2]>0&&a[1][2]>0) { // for(int i=0;i<3;++i) // { // for(int j=0;i<3;++j) // printf("%d ",a[i][j]); // printf("\n"); // } cnt++; } // } // } } } } } printf("%d",cnt); return 0; }
- 1
Information
- ID
- 936
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- 9
- Tags
- (None)
- # Submissions
- 308
- Accepted
- 26
- Uploaded By