BIT-CS-2001年复试机试(A)(约瑟夫环链表法)

2019-01-27  本文已影响1人  小白之白小明

1、编写程序,计算下列分段函数 y=f(x)的值。

y= -x+2.5,0<= x <2

y=2-1.5(x-3)(x-3),2<= x <4

y=x/2-1.5,4<= x <6。

#include<iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    if (0 <= n&&n < 2)
        cout << 2.5 - n;
    else if (n >= 2 && n < 4)
        cout << 2 - 1.5*(n - 3)*(n - 3);
    else if (n <= 4 && n < 6)
        cout << n*0.5 - 1.5;
    system("pause");
    return 0;
}

2、编写程序,读入一个整数 N。若 N 为非负数,则计算 N 到 2N 之间的整数和;若 N 为一个负数,则求 2N 到 N 之间的整数和。

#include<iostream>
using namespace std;
int main() {
    int n;
    cin >> n;
    long long int sum;
    if (n >= 0)
        sum = (n+1)*(n + 2 * n) / 2;
    else
        sum = (1-n)*(n + 2 * n) / 2;
    cout << sum;
    system("pause");
    return 0;
}

3、设 N 是一个四位数,它的 9 倍恰好是其反序数(例如:1234 的反序数是 4321),求 N 的值。

#include<iostream>
using namespace std;
int main() {
    for (int n = 1000; n <= 9999; n++) {
        long int m = n * 9;
        int a = n / 1000;
        int b = n / 100 - a * 10;
        int c = n / 10 - a * 100 - b * 10;
        int d = n % 10;
        int aa = m / 1000;
        int bb = m / 100 - aa * 10;
        int cc = m / 10 - aa * 100 - bb * 10;
        int dd = m % 10;
        if (a == dd&&b == cc&&c == bb&&d == aa)
            cout << n << endl;
    }
    system("pause");
    return 0;
}

4、N 个人围成一圈顺序编号,从 1 号开始按 1、2、 3 顺序报数,报 3 者退出圈外,其余的人再从 1、2、 3 开始报数,报 3 的人再退出圈外,依次类推。请按退出顺序输出每个退出人的原序号。要求使用环形链表编程。
即约瑟夫环问题。

#include<iostream>
using namespace std;
struct lnode {
    int num;
    lnode *next;
};
int main() {
    lnode *temp,*p;
    lnode *head = new lnode;    //初始化链表
    head->num = 1;
    p = head;
    p->next = NULL;
    int n;
    cin >> n;
    for (int i = 2; i <= n; i++) {
        temp = new lnode;
        temp->num = i;
        p->next = temp;
        p = temp;
        p->next = NULL;
    }
    p->next = head;  //成环
    p = head;
    int i = 1;
    while (n != 0) {
        if (i % 3 == 0) {
            cout << p->num << " ";
            head->next = p->next;
            i = 1;
            p = head->next;
            n--;
        }
        i++;
        head = p;
        p = p->next;
    }

    system("pause");
    return 0;
}
上一篇下一篇

猜你喜欢

热点阅读