1. 程式人生 > >數學回味系列之4

數學回味系列之4

問題提出:

       有編號1~100個燈泡,起初所有的燈都是滅的。有100個同學來按燈泡開關,如果燈是亮的,那麼按過開關之後,燈會滅掉。如果燈是滅的,按過開關之後燈會亮。

現在開始按開關。

       第 1 個同學,把所有的燈泡開關都按一次(按開關燈的編號:1,2,3,......100)。

       第 2 個同學,隔一個燈按一次(按開關燈的編號:2,4,6,......,100)。

       第 3 個同學,隔兩個燈按一次(按開關燈的編號:3,6,9,......,99)。

       ......

       問題是,在第100個同學按過之後,有多少盞燈是亮著的?

解決思路:

       明顯這是一個 奇偶問題

,一個燈 奇數次是亮著的,偶數次就滅了。

       那這個問題就變成了一個判斷 奇數偶數 的數學問題。

       先最簡單的思路,模擬這個過程,light[i][j] 代表 第 i 個人按了第 j 個燈,直接上程式碼:

/* linolzhang 2008.05
*/
// 蒐集過程
int light[100][100];
for(int i=0;i<100;i++)
for(int j=0;j<100;j++)
    if(j%i == 0)
    {
         light[i][j] = 1;
    }
// 累加過程(j列對應和為偶數為滅)
int statu[100] = {0};
for(int j=0; j<100; j++)
{
    for(int i=0; i<100; i++)
        statu[j] += light[i][j];

    statu[j] = statu[j] % 2;
}

        感覺這個問題已經很完美的解決了?

*也許不是,你應該有更好的思路

        Light 1 只會被第1個同學按;

        Light 2 只會被第1個同學和第2個同學按;

        Light 3 只會被第1個同學和第3個同學按;

        Light 4 只會被第1個同學、第2個同學以及第4個同學按;

       ……

       Light N 只會被第1個同學、……、第N個同學按;

      找到規律了嗎?沒錯,這是一個簡單的因式分解題,只需要求 該序號N 能被哪些數整除?

int getCount(int num)
{
    int count = 0; // 因子個數
    for(int i=1;i<num;i++)
        if(0==num % i)
            count++;

    return count;
};
        計算因子個數,因子個數為偶數個,燈是滅的。

*那還有沒有第三種解法呢?

        接著上面來看,什麼樣的編號具有奇數個因子,什麼樣的編號具有偶數個因子?來看 質因數分解的定理:

        任何正數都能被唯一表示成多個質因數冪次乘積的方式。

       36 = 2^2 * 3^2(2、3、6)

       64 = 2^3 * 2^3 (2、4、8、16、32)

       99 = 3^2 * 11    (3、9、33、11)

       我們得到結論,只有指數和為偶數次的 其因子才會是奇數個,那麼滿足這個條件的是哪些呢?

       必須滿足完全平方數。

       ok,我們得到結論,1~100中完全平方數有 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 ,這10個編號的燈是亮著的。

相關推薦

數學回味系列4

問題提出:        有編號1~100個燈泡,起初所有的燈都是滅的。有100個同學來按燈泡開關,如果燈是亮的,那麼按過開關之後,燈會滅掉。如果燈是滅的,按過開關之後燈會亮。 現在開始按開關。        第 1 個同學,把所有的燈泡開關都按一次(按開關燈的編號:1,2

數學回味系列5

問題提出:        三個人分一塊蛋糕,如何讓每個人都覺得公平?          解題思路: ● 最公平的方案 - 先分後選         由 A 將蛋糕分成3塊,BC選擇其中兩塊;         B重新對 選擇的兩塊二次分割,C先選,剩下的一塊給B; ● 不吃虧

數學回味系列19

       發現一些比較有意思的數,大家一起來認識一下:        分別是 阿姆斯特朗數、完全數、自守數、迴文數 。 阿姆斯特朗數:        如果一個正整數等於其各個數字的立方和,則稱為 阿姆斯特朗數 (也稱自戀性數)。        比如 153 = 1^

hdu2048神、上帝以及老天爺 and hdu2049不容易系列(4)——考新郎解題報告---錯排+組合(組合數學

                                     神、上帝以及老天爺 Ti

mysql系列4----密碼管理、授權、圖形化管理

erl column option process 生成 自己 服務 auth 存儲 一、mysql密碼破解 1、在shell命令行下修改密碼 mysqladmin -hlocalhost -uroot -p password "1234

不容易系列(4)——考新郎

mode 實例 script php 容易 鏈接 兩個 problem 求解 題目鏈接 Problem Description 國慶期間,省城HZ剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有一個有意思的節目,叫做"考新郎",具體的操作是這樣的:首

不容易系列(4)——考新郎 遞推

一場 輸出 urn iss map 測試 多人 scrip mit 不容易系列之(4)——考新郎 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total S

用go編寫區塊鏈系列4--交易1

0 介紹 比特幣區塊鏈的核心就是交易,區塊鏈唯一的目的就是用一種安全可信的方式去儲存交易,交易一經建立就無法更改。這章中我們將在區塊鏈中引入交易。 1 比特幣中的交易 如果你是開發網路應用的程式設計師,若讓你開發一個線上支付交易,你多半會在資料庫中建立倆張表:賬戶表和交易表。賬戶表中將會

自己動手編寫一個Linux偵錯程式系列4 ELF檔案格式與DWARF除錯格式

目錄 在上一節中,你已經聽說了DWARF除錯格式,它是程式的除錯資訊,是一種可以更好理解原始碼的方式,而不只是解析程式。今天我們將討論原始碼級除錯資訊的細節,以準備在本教程後面的部分中使用它。 系列索引 準備工作 斷點的設定 暫存器和記憶體 ELF檔案格式

HDU 2049 不容易系列(4)——考新郎

Problem Description 國慶期間,省城HZ剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些,司儀臨時想出了有一個有意思的節目,叫做"考新郎",具體的操作是這樣的: 首先,給每位新娘打扮得幾乎一模一樣,並蓋上大大的紅蓋頭隨機坐成一排; 然後,讓各位新郎尋

神、上帝以及老天爺&&不容易系列(4)——考新郎 (錯排問題)

這兩個題都有涉及錯排的問題,詳情參考https://baike.baidu.com/item/錯排問題/3849290?fr=aladdin 基本公式就是(引自百度百科) 有了這個公式這一切就都簡單了 HDU 2006'10 ACM contest的頒獎晚會隆重開始了! 為了活躍氣氛,組

C#會重蹈覆轍嗎?系列4:華而不實的C#析構器

前段時間去鳥國出差,顛倒黑白,碌碌無為,疏於寫博,請大家理解。下面繼續前貼7月《C與C++社群混戰,C#會重蹈覆轍嗎?》的討論。這次要談的是C#的析構器的問題。這是C#中非常華而不實的一個設計,不必要,且常常誤導很多C#er,且是.NET效能問題的常見陷阱地帶。下面逐項討論: 1.C#析構器是一個醜陋的

杭電I - 不容易系列(4)——考新郎

錯排列加  排列組合 錯排公式:f(n)=(f(n-1)+f(n-2))*(i-1)    (n>=3);    #include<math.h> #include<stdio.h> #include&l

hdu_problem_2049_不容易系列(4)——考新郎

N個人裡面有M個人選錯了,可以看成從N個人裡面選M個人(組合數公式C(N,M),可以參考楊輝三角)然後M個人對應的位置都錯了(可以參考problem_2048) /* * *Problem Description *國慶期間,省城HZ剛剛舉行了一場盛大的集體婚禮,為了使婚禮進行的豐富一些

探索ASP.NET MVC5系列~~~4.模型篇---包含模型常用特性和過度提交防禦

@model Register @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>Register

ABP(現代ASP.NET樣板開發框架)系列4、ABP模組系統

基於DDD的現代ASP.NET開發框架--ABP系列之4、ABP模組系統 ABP是“ASP.NET Boilerplate Project (ASP.NET樣板專案)”的簡稱。  本文由東莞-天道提供翻譯  ABP模組系統簡介 ABP框架提供了建立和組裝模組的基礎,一個模組

感測器系列4.8光敏感測器

4.8 光敏感測實驗 一、實驗目的 1.掌握LPC2378晶片的程式設計方法 2. 掌握光敏感測器的工作原理 3. 瞭解光敏電阻的用途 二、實驗材料 1.具有USB 串列埠通訊的PC 機1 臺 2.ADS1.2 整合開發軟體1 套 3.J-Lin

杭電ACM 2049 不容易系列(4)——考新郎

利用錯排公式和排列組合公式 最終結果就是 M個錯排*Cmn     其中m=M,n=M-N #include <iostream> using namespace std; __int64 Fac(int n){ __int64 ans=1; for(

感測器系列4.1振動感測實驗

4.1 振動感測實驗 一、實驗目的 掌握LPC2378晶片的程式設計方法 掌握震動感測器的使用方法 掌握震動感測器在實際中的應用。 二、實驗材料 具有串列埠通訊的電腦一臺 ADS1.2 開發環境 J-Link-ARM模擬器一個 LPC2

單元測試系列4:使用Unitils測試DAO層

Spring 的測試框架為我們提供一個強大的測試環境,解決日常單元測試中遇到的大部分測試難題:如執行多個測試用例和測試方法時,Spring上下文只需建立一次;資料庫現場不受破壞;方便手工指定Spring配置檔案、手工設定Spring容器是否需要重新載入等。但也存在不足的地方,