HDOJ1001-1005题解

1001--Sum Problem(http://acm.hdu.edu.cn/showproblem.php?pid=1001

#include <stdio.h>

int sum(int n)
{
    if(n % 2)
        return (n + 1) / 2 * n;
    else
        return (n / 2) * (n + 1);
}

int main()
{
    int n;
    while(scanf("%d",&n) != EOF){
        printf("%d\n\n",sum(n));
    }
    return 0;
}

1002--A + B Problem II(http://acm.hdu.edu.cn/showproblem.php?pid=1002

简单题:大数的运算

注意格式(Case的首字母大写、各种空格、每一行之间有空行,最后一行没有空行)!

给出几组测试数据:

6

1 2

1 0

9999 1

1 999999

5555 4445

112233445566778899 998877665544332211

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void solve()
{
    int n,i,j,k,flag,t,cas,L;
    char a[1001],b[1001],c[1002];
    scanf("%d",&n);
    getchar();
    cas=1;
    while(n--)
    {
        flag=0;
        memset(a,'\0',sizeof(a));
        memset(b,'\0',sizeof(b));
        memset(c,'\0',sizeof(c));
        scanf("%s",a);
        scanf("%s",b);
        printf("Case %d:\n",cas);
        printf("%s",a);
        printf(" + ");
        printf("%s",b);
        printf(" = ");
        strrev(a);
        strrev(b);
        k=i=0;
        L=(strlen(a)>strlen(b)?strlen(b):strlen(a));
        while(i<L)
        {
            t=(a[i]-'0')+(b[i]-'0')+flag;
            flag=(t>=10?1:0);
            c[k++]=t%10+'0';
            i++;
        }
        if(a[i]=='\0')
        {
            while(b[i]!='\0') {
                t=b[i++]-'0'+flag;
                c[k++]=t%10+'0';
                flag=(t>=10?1:0);
            }
        }
        else
        {
            while(a[i]!='\0') {
                t=a[i++]-'0'+flag;
                c[k++]=t%10+'0';
                flag=(t>=10?1:0);
            }
        }
        if(flag) c[k]='1';
        else k--;
        while(k>=0)
        {
            printf("%c",c[k]);
            k--;
        }
        printf("\n");
        if(n>0) printf("\n");
        cas++;
    }
}

int main()
{
    solve();
    return 0;
}

1003--Max Sum(http://acm.hdu.edu.cn/showproblem.php?pid=1003

#include<iostream>
#include<cstdio>
using namespace std;

void solve()
{
    int T, i, max,sum,n,num,begin,end,t,con;
    while(cin>>T) {
        for(i = 1; i <= T; i++) {
            max = -1000000;
            sum = 0;
            n = con = 0;
            cin>>n;
            num = n;
            begin = end = 0;
            while(n--) {
                cin>>t;
                sum += t;
                con++;
                if(sum > max) {
                    begin = con;
                    max = sum;
                    end = num - n;
                }
                if(sum < 0) {
                    sum = 0;
                    con = 0;
                }
            }
            cout<<"Case "<<i<<":"<<endl<<max<<" "<<end-begin+1<<" "<<end<<endl;
            if(i != T) cout<<endl;
        }
    }
}

int main()
{
    solve();
    return 0;
}

1004--Let the Balloon Rise(http://acm.hdu.edu.cn/showproblem.php?pid=1004

#include<iostream>
#include<cstdio>
#include<map>
#include<string>
#include<cstring>
using namespace std;

void solve()
{
    int T, max, t;
    map<string, int> color_count;
    string color;
    while(cin>>T && T) {
        max = 0;
        while(T--) {
            cin>>color;
            ++color_count[color];
        }
        map<string, int>::const_iterator ii, it;
        it = color_count.begin();
        while(it != color_count.end()) {
            if(max < it->second) {
                max = it->second;
                ii = it;
            }
            it++;
        }
        cout<<ii->first<<endl;
        color_count.clear();
    }
}

int main()
{
    solve();
    return 0;
}

1005--Number Sequence(http://acm.hdu.edu.cn/showproblem.php?pid=1005

#include<iostream>
using namespace std;

void solve()
{
    int A, B, n;
    while(cin>>A>>B>>n && (A || B || n)) {
        int a[2] = {1, 1};
        for(int i = 0; i < (n %49 - 1) / 2; i++) {
            a[0] = (A * a[1] + B * a[0]) % 7;
            a[1] = (A * a[0] + B * a[1]) % 7;
        }
        if(n % 2) {
            cout<<a[0]<<endl;
        } else {
            cout<<a[1]<<endl;
        }
    }
}

int main()
{
    solve();
    return 0;
}
时间: 2024-10-03 00:27:56

HDOJ1001-1005题解的相关文章

2007淘宝UED招聘题解(前端开发部分)

史上最酷的招聘已经结束,效果还是不错的.我们发现了很多颇有潜力的人才.他们的一些聘题的解法也开拓了我们的视野,让我们收获良多.感谢所有参与招聘及所有关注淘宝UED博客的朋友. 以下是该次招聘前端开发工程师的聘题解答: 小贤是一条可爱的小狗(Dog),它的叫声很好听(wow),每次看到主人的时候就会乖乖叫一声(yelp). 从这段描述可以得到以下对象: function Dog() { this.wow = function() { alert('Wow'); } this.yelp = func

Codeforces B. Taxi 算法题解

简单总结题意: 有一个数组,数组中的数值不会大于4,即只能是1,2,3,4,要把这些数值装进一个容量最大为4的容器里面,使得所用到这样的容器的个数最小. 经测试数据很大,会有10万个数据,所以这里我并不用排序数据,而是使用counting sort的思想,根据特定的数据优化,使得题解时间复杂度为O(n). 更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/ 程序如下: #include <iostream>

code chef:Counting Matrices题解

题目:给定一个数值,找出2*2矩阵的对角和等于N(N<2500)和行列式大于0的个数. 这里是考数学知识了,程序不难,不过要精确计算好却也不容易. 最原始的程序,但是会超时: void CountingMatrices() { int T = 0, N = 0; cin>>T; while (T--) { cin>>N; long long ans = 0; for (int i = 1; i < N; i++) { int a = i, b = N-i; for (i

code chef:Cool Guys题解

All submissions for this problem are available. Given an integer N. Integers A and B are chosen randomly in the range [1..N]. Calculate the probability that the Greatest Common Divisor(GCD) of A and B equals to B. Input The first line of the input co

ERROR 1005 (HY000): Can&#039;t create table &#039;zcxt.tb_asset&#039; (errno: 150)解决

环境 MySQL 5.1 + 命令行工具 问题 建表出现如下错误: ERROR 1005 (HY000): Can't create table 'zcxt.tb_asset' (errno: 150) 解决 1. 是否存 在SQL语法错误: 2. 外键引用的字段是否存在.

ERROR 1005 (HY000): Can&#039;t create table错误的解决

在使用MySQL的时候,在操作不当时,很容易出现 ERROR 1005 (HY000): Can't create table 这类错误.很多站长朋友可能需要排查很久才会找到问题的原因其实很简单,希望这篇文章可以对站长朋友以及Mysql初学者一点帮助. MYSQL官方提供的问题原因: 在信息中有一组[LATEST FOREIGN KEY ERROR]会有最近错误的详细描述和解决办法. Cannot find an index in the referenced table where the r

Android L 值不值得刷?十个问题解疑惑

笔者今天把大家对Android L预览版的问题进行一个汇总,并挑选十个最受用户关注的问题进行一一回答.相信当你看完这十个问题后,Android L预览版到底值不值得刷?你心中一定会有自己的答案. (一)Android L预览版是什么? 在今年6月26日的谷歌在I/O开发者大会上,谷歌正式推出Android L.虽然没有等到Android 5.0的实际,但Android L的出现,也可以说是Android系统自2008年问世以来变化最大的升级.除了新的用户界面.性能升级和跨平台支持,全面的电池寿命

校园职业社交Handshake获1005万美金A轮融资

大学生职场社交软件Handshake在今日宣布已获得 1005 美金的 A 轮融资,本轮融资的领投方为 Kleiner Perkins Caufield & Byers (KPCB),跟投方为 True Ventures, Lightspeed Venture Partners 和 Lowercase,据该公司透露,由于估值还是不到 10 亿美元,暂时还不方便透露.而本次融资将主要用于扩展校园数量和产品的完善. Handshake 创立于 2014年,在当时为寻找实习.就业机会的学生提供资源,通

iostream-pat上1005为什么部分正确

问题描述 pat上1005为什么部分正确 #include using namespace std; int main() { int k,n,a[100],i=0,j,b=0; cin>>k; for(i=0;i<k;i++) cin>>a[i]; i=0; while(i<k){ n=a[i]; while(n!=1) { if(n%2==1) n=(3*n+1)/2; else n=n/2; for(j=0;j<i;j++) if(a[j]==n) { fo