我應該提供正確的輸入:(f,k,z)讓程式列印句子:完全正確!好作業。輸入應滿足 3 種方法這里我們有 3 種方法,每種方法都成功或失敗(如果失敗則列印:不)
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
static int64_t ac_dc[] = {10143, 54893, 47109, 24350, 17669, 82062};
const static int N = sizeof(ac_dc) / sizeof(*ac_dc);
static void fail() {
puts("Nope!");
exit(EXIT_FAILURE);
}
static void linkin_park(int64_t t, int64_t v, int64_t s) {
if(t - s / 7 3 * v / 11) fail();
}
static void metallica(int o, int64_t j) {
int64_t g = j;
for(; o < N; o) {
if((o % 2) == 0) continue;
g = ac_dc[o];
}
if(g != 94857) fail();
}
static void aerosmith(int d, int64_t n) {
if(d < N) {
if(d % 2)
aerosmith( d, n);
else
aerosmith(d 1, n * ac_dc[d]);
} else if(n != 540151794)
fail();
}
int main() {
int64_t f, k, z;
printf("Please enter the right three numbers: ");
fflush(stdout);
if(scanf("%" SCNd64 " %" SCNd64 " %" SCNd64, &f, &k, &z) != 3) fail();
ac_dc[0] = f;
ac_dc[5] = k;
ac_dc[4] = z;
metallica(0, 14041);
aerosmith(1, 9);
linkin_park(f, k, z);
puts("Exactly! Good job.");
}
uj5u.com熱心網友回復:
將其視為具有 3 個未知數的 3 個方程組:f、k、z。
程式將這些值分配給一個全域陣列
static int64_t ac_dc[] = {f, 54893, 47109, 24350, z, k}; // conceptually
該linkin_park函式基本上是 3 個變數的方程:
f - z/7 3*k/11 = 0
考慮到另外兩個,我們將在最后使用它來找到最后一個未知數。
metallica是“更容易”:
g ac_dc[1] ac_dc[3] ac_dc[5] = 94857
14041 54893 24350 k = 94857
k = 1573
aerosmith更具挑戰性,但如果我們跟蹤遞回呼叫的引數:
| d | n | n 通過 |
|---|---|---|
| 1 | 9 | 9 |
| 2 | 9 | 9 * ac_dc[2]= 9 * 47,109 = 423,981 |
| 3 | 423,981 | 423,981 |
| 4 | 423,981 | 423,981 * z |
z = 540151794 / 423981
這足以找到所有未知數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/483275.html
上一篇:相對于中心縮放多邊形
