• 杭电oj平台上的11页题目代码:hdu-page11 (2030~2039)(2035、2036)


    //2030
    //思路:汉字机内码使用二个字节,汉字的每个字节都是<0的,
    #include<stdio.h>
    #include<string.h>
    #define N 1001
    char str[N];
    int main()
    {
    int n;
    int count;
    int len;
    scanf("%d", &n);
    getchar();
    while (n--)
    {
    gets(str);
    count = 0;
    len = strlen(str);
    for (int i = 0; i < len; i++)
    {
    if (str[i]<0)
    {
    count++;
    }
    }
    printf("%d ", count/2);
    }

    return 0;
    }

    //2031
    #include<stdio.h>
    #include<string.h>
    #define N 1001
    int str[N];//用来存储r进制数
    int main()
    {
    int n;
    int r;
    int count;
    int temp;
    while (~scanf("%d%d",&n,&r))
    {
    count = 0;
    temp = 0;
    //将负数转换为正数
    if (n<0)
    {
    n = -n;
    printf("-");
    }
    while (n)
    {
    temp = n%r;
    str[count++] = temp;
    n /= r;
    }
    //从后往前输出
    for (int i = count-1; i >= 0; i--)
    {
    if (str[i]>=0&&str[i]<=9)
    {
    printf("%d", str[i]);
    }
    else
    {
    str[i] = str[i] - 10 + 'A';//存储其对应的ascii码
    printf("%c", str[i]);//输出相应的ascii码对应的字母
    }
    }
    printf(" ");
    }
    return 0;
    }

    //2032
    #include<stdio.h>
    #include<string.h>
    #define N 31
    int r[N][N];
    int main()
    {
    int n;
    int i, j;
    for ( i = 1; i < 31; i++)
    {
    r[i][1] = 1;
    r[i][i] = 1;
    }
    for ( i = 3; i < 31; i++)
    {
    for (j = 2; j < i; j++)
    {
    r[i][j] = r[i - 1][j] + r[i - 1][j - 1];
    }
    }
    while (~scanf("%d",&n))
    {
    for ( i = 1; i <= n; i++)
    {
    for ( j = 1; j <= i; j++)
    {
    if (j-1)
    {
    printf(" ");
    }
    printf("%d", r[i][j]);
    }
    printf(" ");
    }
    printf(" ");
    }
    return 0;
    }

    //2033
    #include<stdio.h>
    #include<string.h>
    #define N 31
    int r[N][N];
    int main()
    {
    int n;
    scanf("%d", &n);
    int hh1, mm1, ss1;
    int hh2, mm2, ss2;
    int hh, mm, ss;
    while (n--)
    {
    scanf("%d%d%d", &hh1, &mm1, &ss1);
    scanf("%d%d%d", &hh2, &mm2, &ss2);
    hh = 0;
    mm = 0;
    ss = 0;
    ss = ss1 + ss2;
    if (ss>59)
    {
    mm+=1;
    ss -= 60;
    }
    mm = mm+mm1 + mm2;
    if (mm>59)
    {
    hh += 1;
    mm -= 60;
    }
    hh = hh+hh1 + hh2;
    printf("%d %d %d ", hh, mm, ss);
    }
    return 0;
    }

    //2034
    #include<iostream>
    #include<algorithm>
    #define N 101
    int a[N];
    int b[N];
    using namespace std;
    int main()
    {
    int n, m;
    int i, j;
    int len;//用来记录交集中元素的个数
    while (cin>>n>>m)
    {
    len = 0;
    if (n==0&&m==0)
    {
    break;
    }
    for ( i = 0; i < n; i++)
    {
    cin >> a[i];
    }
    sort(a, a + n);
    for ( j = 0; j < m; j++)
    {
    cin >> b[j];
    }
    sort(b, b + m);
    for ( i = 0; i < n; i++)
    {
    for ( j = 0; j < m; j++)
    {
    if (a[i] == b[j])
    {
    len++;
    a[i] = -1;//标记了相等的数
    }
    }
    }
    if (len==n)
    {
    cout << "NULL" << endl;
    }
    else
    {
    for ( i = 0; i < n; i++)
    {
    if (a[i] >= 0)
    cout << a[i] <<' ';
    }
    cout << endl;
    }

    }
    return 0;
    }

    //2035
    //快速幂
    #include<iostream>
    #include<algorithm>
    #define N 101
    int a[N];
    int b[N];
    using namespace std;
    int mod_pow(int x, int n, int mod)
    {
    int res = 1;
    while (n>0)
    {
    //n&1等效于 n%2==1
    if (n & 1)
    res = res*x%mod;
    x = x*x%mod;
    n >>= 1;//右移一位
    }
    return res;
    }

    int main()
    {
    int m, n;
    while (~scanf("%d%d",&m,&n))
    {
    if (m == 0 && n == 0)
    {
    break;
    }
    printf("%d ", mod_pow(m, n, 1000));
    }
    return 0;
    }

    //2036
    /*思路:原理是在平面上取(0,0)来分割多边形为多个三角形,然后用叉乘来求三角形的面积(有向)再求和。这样的话可以把凸N多边形转化为N个三角形,然后求解N个三角形即可,输入顶点的顺序。无论是顺时针还是逆时针均可。
    题目要求:计算多边形面积

    * 方法:把n多边形分割成n - 2个三角形,分别求和,然后相加

    * 注意:分割的所有三角形有一个公共的顶点,这里选择0点位公共点

    * 注:题中给出的点的顺序为逆时

    * 叉乘的性质:设两向量P和Q

    * 1.P ×Q > 0 则Q在P的逆时针方向

    * 2.P ×Q < 0 则Q在P的顺时针方向

    * 3.P ×Q = 0 则Q和P共线,方向可能相同也可能不相同*/
    #include<iostream>
    #include<algorithm>
    #define N 101
    using namespace std;
    typedef struct point
    {
    int x, y;
    }point;
    point a[N];
    double area(point p,point q)
    {
    return p.x*q.y - q.x * p.y;
    }

    int main()
    {
    int n;
    int i;
    int j;
    double sum;
    while (cin>>n)
    {
    sum = 0;
    if (n==0)
    {
    break;
    }
    for ( i = 0; i < n; i++)
    {
    scanf("%d%d", &a[i].x, &a[i].y);
    }
    //将其分割成多个三角形
    for ( i = 0; i < n; i++)
    {
    j = (i + 1) % n;//
    sum += area(a[i], a[j]);
    }
    sum /= 2;
    if (sum<0)
    {
    sum = -sum;
    }
    printf("%.1lf ", sum);
    }
    return 0;
    }

    //2037
    //思路:贪心
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define MAXN 100

    struct node{
    int start;
    int end;
    }record[MAXN];

    bool cmp(const node&a, const node&b)
    {
    return a.end < b.end;
    }
    int main()
    {
    int n;
    int i;
    int count;
    int lastend;
    while (cin>>n)
    {
    if (n==0)
    {
    break;
    }
    for ( i = 0; i < n; i++)
    {
    cin >> record[i].start >> record[i].end;
    }
    sort(record, record + n, cmp);
    count = 1;
    lastend = record[0].end;
    for ( i = 0; i < n; i++)
    {
    //贪心法处理:后一个起始时间必须大于或等于前一个终止时间
    if (record[i].start>=lastend)
    {
    count++;
    lastend = record[i].end;
    }

    }
    cout << count << endl;
    }
    return 0;
    }

    //2039
    //思路:判断是不是一个三角形的思路是任意两边之和是否大于第三边
    #include<iostream>
    #include<algorithm>
    using namespace std;
    #define MAXN 100
    int main()
    {
    int m;
    cin >> m;
    double a, b, c;
    while (m--)
    {
    cin >> a >> b >> c;
    if (a+b>c&&b+c>a&&a+c>b)
    {
    cout << "YES" << endl;
    }
    else
    {
    cout << "NO" << endl;
    }

    }
    return 0;
    }

    一生有所追!
  • 相关阅读:
    哈希查找之链地址法解决冲突(代码封装实现)
    kibana对logstash监控获取不到数据
    PL/SQL12中文版
    curl定时任务下载执行
    alias别名使用
    redhat7.0安装ifconfig
    WD backup西部盘数据备份
    Cecos国内集成系统基于rhel6.5
    Serv-U精简版FTP服务端
    [解决思路]ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file
  • 原文地址:https://www.cnblogs.com/BlueBlue-Sky/p/8577324.html
Copyright © 2020-2023  润新知