致初學者(三): HDU 2033~ 2043題解

来源:https://www.cnblogs.com/cs-whut/archive/2019/09/16/11525355.html
-Advertisement-
Play Games

下麵繼續給出HDU 2033~2043的AC程式,供大家參考。2033~2043這10道題就被歸結為“ACM程式設計期末考試(2006/06/07) ”和“2005實驗班短學期考試 ”。 HDU 2033:人見人愛A+B 簡單分支結構。 #include <stdio.h> int main() { ...


      下麵繼續給出HDU 2033~2043的AC程式,供大家參考。2033~2043這10道題就被歸結為“ACM程式設計期末考試(2006/06/07) ”和“2005實驗班短學期考試 ”。

HDU 2033:人見人愛A+B

      簡單分支結構。

#include <stdio.h>
int main()
{
    int n,ah,am,as,bh,bm,bs;
    scanf("%d",&n);
    while (n--)
    {
        scanf("%d%d%d%d%d%d",&ah,&am,&as,&bh,&bm,&bs);
        bs+=as;
        if (bs>=60)
        {
            bm+=bs/60;
            bs=bs%60;
        }
        bm+=am;
        if (bm>=60)
        {
            bh+=bm/60;
            bm=bm%60;
        }
        bh+=ah;
        printf("%d %d %d\n",bh,bm,bs);
    }
    return 0; 
}
View Code

HDU 2034:人見人愛A-B

      設用數組a,b,c分別表示集合A,B,C,其中 C=A-B。
      用迴圈 for (i=0;i<n;i++) 處理集合A中的每個元素a[i],對於元素a[i] 用迴圈 for (j=0;j<m;j++) 在集合B中查找a[i]是否在集合B中存在,如果a[i]不在集合B中出現,則將a[i]保存到數組c中,作為集合C的一個元素。
      得到數組c後,輸出前採用冒泡排序按從小到大的順序對數組c進行排序。 

#include <stdio.h>
int main()
{
    int n,m,i,j,cnt,t;
    int a[101],b[101],c[101];
    while (1)
    {
        scanf("%d%d",&n,&m);
        if (n==0 && m==0)
            break;
        for (i=0;i<n;i++)        // 輸入集合A的元素
            scanf("%d",&a[i]);
        for (i=0;i<m;i++)        // 輸入集合B的元素
            scanf("%d",&b[i]);
        cnt=0;                  // 集合C=A-B的元素個數
        for (i=0;i<n;i++)
        {
            for (j=0;j<m;j++)  // 查找當前集合A的元素a[i]是否在集合B中存在
                if (a[i]==b[j]) break;
            if (j==m)          // 如果a[i]不在集合B中出現
                c[cnt++]=a[i];
        }
        if (cnt==0)
           printf("NULL\n");
        else
        {
            for (i=0;i<cnt-1;i++) //用冒泡法排序
                for (j=0;j<cnt-1-i;j++)
                    if (c[j]>c[j+1])
                    {
                        t=c[j];
                        c[j]=c[j+1];
                        c[j+1]=t;
                    }
            for (i=0;i<cnt;i++)
            {
                printf("%d ",c[i]);
            }
            printf("\n");
        }
    }
    return 0; 
}
View Code

HDU 2035:人見人愛A^B

      採用快速冪運算完成A^B的計算。

#include <stdio.h>
int mod_pow(int x,int n,int m)  // 快速冪運算
{
    int ret=1;
    while (n!=0)
    {
        if (n&1) ret=ret*x%m;
        x=x*x%m;
        n/=2;
    }
    return ret;
}
int main()
{
    int a,b;
    while (1)
    {
        scanf("%d%d",&a,&b);
        if (a==0 && b==0) break;
        printf("%d\n",mod_pow(a,b,1000));
    }
    return 0; 
}
View Code

HDU 2036:改革春風吹滿地

 

HDU 2037:今年暑假不AC

      定義一個結構體
      struct showtime
      {
           int begin;
           int end;
      };
用於保存電視節目的開始時間和結束時間。定義結構體數組show[101]保存輸入的電視節目情況。
      採用貪心法求解。將電視節目(即結構體數組show)按結束時間從小到大排列(若結束時間系統,則按開始時間從大到小)。
      先設lastend=show[0].end,因為第1個元素的結束時間一定是最早的,然後從左到右遍曆數組各元素,若當前元素的開始時間大於lastend,則可以看一個完整節目,計數,同時修改lastend使之等於當前元素的結束時間。直到數組全部元素遍歷完。

#include <stdio.h>
#include <algorithm>
using namespace std;
struct showtime
{
    int begin;
    int end;
}; 
bool cmp(showtime a ,showtime b)
{
    if(a.end != b.end)    
        return a.end < b.end;
    else
        return a.begin > b.begin;
}
int main()
{
    showtime show[101];
    int n,i,cnt,lastend;
    while (scanf("%d",&n) && n!=0)
    {
        for (i = 0;i<n;i++)
        {
            scanf("%d%d",&show[i].begin,&show[i].end);
        }
        sort(show,show+n,cmp);     
        cnt = 1;
        lastend = show[0].end;
        for (i = 0;i < n ;i++)
        {
            if(lastend <= show[i].begin)
            {
                cnt++;
                lastend = show[i].end;
            }
        }
        printf("%d\n",cnt);
    }
    return 0;
}
View Code

HDU 2039:三角形

      簡單分支結構。輸入三角形三條邊後,若滿足任意兩邊的和大於第3條邊,則可以構成一個三角形。

#include <stdio.h>
int main()
{
    int m;
    double a,b,c;
    scanf("%d",&m);
    while (m--)
    {
        scanf("%lf%lf%lf",&a,&b,&c);
        if (a+b>c && a+c>b && b+c>a)
           printf("YES\n");
        else
           printf("NO\n");
    }
    return 0;
}
View Code

HDU 2040:親和數

      抽象一個函數 int calcSum(int n)用於計算整數n的所有真因數之和。

#include <stdio.h>
#include <math.h>
int calcSum(int n)
{
    int sum=1,i,t;
    t=(int)sqrt(1.0*n);
    for (i=2;i<=t;i++)
        if (n%i==0)
            sum+=i+n/i;
    return sum;
}
int main()
{
    int m,a,b;
    scanf("%d",&m);
    while (m--)
    {
        scanf("%d%d",&a,&b);
        if (calcSum(a)==b && calcSum(b)==a)
           printf("YES\n");
        else
           printf("NO\n");
    }
    return 0;
}
View Code

HDU 2041:超級樓梯

      設 f[i]表示上到第i級樓梯的方法數。顯然上到第i級,可以在第i-1級樓梯跨1級到達;或者在第i-2級樓梯跨2級到達。
      故有 f[i]=f[i-1]+f[i-2]。

#include <stdio.h>
int main()
{
    int n,m,i;
    int f[41]={0,1,1};
    for (i=3;i<=40;i++)
        f[i]=f[i-1]+f[i-2];
    scanf("%d",&n);
    while (n--)
    {
        scanf("%d",&m);
        printf("%d\n",f[m]);
    }
    return 0;
}
View Code

HDU 2042:不容易系列之二

      簡單迭代處理。迭代初值num=3,迭代式為: num=2*(num-1); 。

#include <stdio.h>
int main()
{
    int n,a,i,num;
    scanf("%d",&n);
    while (n--)
    {
        scanf("%d",&a);
        num=3;
        for (i=1;i<=a;i++)
            num=2*(num-1);
        printf("%d\n",num);
    }
    return 0;
}
View Code

HDU 2043:密碼

      簡單字元串處理。

#include <stdio.h>
#include <string.h>
int main()
{
    int m,i,f1,f2,f3,f4;
    char str[51];
    scanf("%d",&m);
    while (m--)
    {
        scanf("%s",str);
        if (strlen(str)<8 || strlen(str)>16)
           printf("NO\n");
        else
        {
            f1=f2=f3=f4=0;
            for (i=0;str[i]!='\0';i++)
                if (str[i]>='0' && str[i]<='9')
                    f3=1;
                else if (str[i]>='A' && str[i]<='Z')
                    f1=1;
                else if (str[i]>='a' && str[i]<='z')
                    f2=1;
                else
                    f4=1;
            if (f1+f2+f3+f4>=3)
                printf("YES\n");
            else
                printf("NO\n");
        }
    }
    return 0;
}
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.let作用域局限於當前代碼塊 代碼1: let作用域僅限於當前代碼塊,而var的作用域是全局的 2.let作用域不會被提升 代碼2: let作用域不會被提升,而var作用域會被提升 代碼2相當於: 3.let不能被重覆定義 代碼3: 上面這段代碼運行會報錯:Identifier 'str2' h ...
  • 前言 vue通信手段有很多種,props/emit、vuex、event bus、provide/inject 等。還有一種通信方式,那就是 $attrs 和 $listeners,之前早就聽說這兩個api,趁著有空來補補。這種方式挺優雅,使用起來也不賴。下麵例子都會通過父、子、孫子,三者的關係來說 ...
  • [TOC] 1.DOM樹介紹 DOM:文檔對象模型。DOM 為文檔提供了結構化表示,並定義瞭如何通過腳本來訪問文檔結構。目的其實就是為了能讓js操作html元素而制定的一個規範。 DOM就是由節點組成的:HTML載入完畢,渲染引擎會在記憶體中把HTML文檔,生成一個DOM樹。 在HTML當中,一切都是 ...
  • 一、使用方法: 因為map標簽是與img標簽綁定使用的,所以我們需要給map標簽添加ID和name屬性,讓img標簽中的usemap屬性引用map標簽中的id或者name屬性(由於瀏覽器的不同,usemap屬性接收二者之一的值,所以通常name和id屬性二者都寫,值相同),並配合area標簽進行使用 ...
  • [TOC] 1.javascript介紹 1.1Web前端有三層: HTML:從語義的角度,描述頁面 結構 CSS:從審美的角度,描述 樣式 (美化頁面) JavaScript:從交互的角度,描述 行為 (提升用戶體驗) 1.2其中JavaScript基礎又分為三個部分: ECMAScript:Ja ...
  • 介紹 前文初始篇 "C++ 深入淺出工廠模式(初始篇)" ,主要闡述了簡單工廠模式、工廠方法模式和抽象工廠模式的結構、特點和缺陷等。以上三種方式,在新增產品時,要麼修改工廠類,要麼需新增具體的工廠類,說明工廠類的封裝性還不夠好。 本文進階篇,主要是將工廠類的封裝性提高,達到新增產品時,也不需要修改工 ...
  • 倒排索引架構 在廣告系統中倒排索引起著至關重要的作用,當請求過來時,需要根據定向信息從倒排索引中匹配合適的廣告。我們的倒排索引採用的是ElasticSearch(後面簡稱ES),考慮點是社區活躍,相關採集、可視化、監控以及報警等組件比較完善,同時ES基於java開發,所以調優和二次開發相對方便 先看 ...
  • 關鍵字&標識符 關鍵字的概念與特征 概念:Java關鍵字是事先定義好的對Java的編譯器有特殊的意義,他們用來表示一種數據類型,或者表示程式的結構等,關鍵字不能用作變數名、方法名、類名、包名和參數。 特征: 完全小寫 在增強版記事本中(例如Notepad++)有特殊顏色 標識符的概念與規則 凡是可以 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...