1. 程式人生 > >韓信點兵演算法解析

韓信點兵演算法解析

這類問題,我想說,沒有想象中的難!

原來做題,總是想找更簡單的,其實都是要經過列舉才能找到答案的,只不過列舉是有技巧的。

這個問題給我們一個啟發,就是條件合併!

就韓信點兵這題來講,就是怎樣把3, 5, 7 的餘數,化為一個模3 * 5 * 7 的餘數。因此這個最小數一定不大於3 * 5 * 7 = 105.

不限定數的範圍,或範圍不小於3 * 5 * 7,韓信點兵一定有解。

附程式如下:

#include <stdio.h>

int main()
{
 int total;
 int A, B, C;
 
 scanf("%d%d%d", &A, &B, &C);
    total = C;
   
 for(; total % 5 != B; total += 7);
 for(; total % 3 != A; total += 35);

  printf("%d\n", total); 

 return 0;
}

相關推薦

演算法解析

這類問題,我想說,沒有想象中的難! 原來做題,總是想找更簡單的,其實都是要經過列舉才能找到答案的,只不過列舉是有技巧的。 這個問題給我們一個啟發,就是條件合併! 就韓信點兵這題來講,就是怎樣把3, 5, 7 的餘數,化為一個模3 * 5 * 7 的餘數。因此這個最小數一定

Java演算法

相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人數了。輸入3個非負整數a,b,c ,表示每種隊形排尾的人數(a<3,b<5,c<7),輸出總人數的最小值(

深入淺出學演算法009-

4008: 深入淺出學演算法009-韓信點兵 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 1886 Solved: 1549 Description  秦朝末年,楚漢相爭。有一次,韓信將1500名將士與楚王大將李鋒交戰。苦戰一場,楚軍不敵,敗退

Problem H: 深入淺出學演算法009-

Description  秦朝末年,楚漢相爭。有一次,韓信將1500名將士與楚王大將李鋒交戰。苦戰一場,楚軍不敵,敗退回營,漢軍也死傷四五百人,於是,韓信整頓兵馬也返回大本營。當行至一山坡,忽有後軍來報,說有楚軍騎兵追來。只見遠方塵土飛揚,殺聲震天。漢軍本來已十分疲憊,這時隊伍大譁。韓信兵馬到坡頂,見來

演算法 迴圈左移陣列元素

static void Main(string[] args) { ForeachLeft();//韓信點兵 } public static void ForeachLeft() { int[

C語言之基本演算法05—

//列舉法 /* ================================================================== 題目:韓信帶兵1500人,死四五百,站3人一排多2,5人一排多4,7人一排多 6,韓信一口說出士兵數量! ========

演算法競賽入門經典習題2-2 水仙花數 2-3

演算法競賽入門經典習題2-2 水仙花數 重定向版並不需要#define LOCAL,fopen版要有檔案才能開啟 </pre><pre code_snippet_id="217260" snippet_file_name="blog_20140304_1_

演算法競賽入門經典 習題2-3 (hanxin)

習題2-3 韓信點兵(hanxin) 相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一樣隊伍的排尾就知道總人數了。輸入3個非負整數a,b,c,表示每種隊形排尾的人數(a<3,b<5

劉汝佳《演算法競賽入門經典》

 題目描述: 相傳三齊王韓信才智過人,從不直接清點自己軍隊的人數,只是讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人數了(不超過100人)。輸入三次排尾的人數,輸出總人數。      AC程式碼: /* by_s

演算法競賽入門經典(第二版)習題 2-2

#include <cstdio> #include <iostream> //演算法競賽入門經典(第二版)習題 2-2 pages-34 using namespa

演算法競賽入門經典》習題2-3 (hanxin)

韓信點兵(hanxin) 韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次都只是掠一眼隊伍的排位就知道人數了。輸入3個非負整數a,b,c,表示每種隊形排尾的人數(a<3,b<5,c<7),輸出

COGS——T 1786.

一行 pan += exgcd 出了 problem 選擇 href n-2 http://www.cogs.pro/cogs/problem/problem.php?pid=1786 ★★★ 輸入文件:HanXin.in 輸出文件:HanXin.out 簡單

習題6

oid 利用 .cn code imp == 參數 clas pub 題目如下 相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人數了。輸入3個非負整數a,b,c ,表示每種隊形排尾的人

表示 logs span txt 數據 包含 bre cas 整數 韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次都只是掠一眼隊伍的排位就知道人數了。輸入包含多組數據,每組數據包含3個非負整數a,b,c,表示每種隊

p1044

open nbsp lose isp display div std AS space   作為循環語句和判斷語句的入門題,相信看我博客的肯定都會。 #include<iostream> using namespace std; int a,b,c,i

南陽oj

方式 cout str std turn spa 的人 網上 中國 /*#include<iostream>using namespace std;int main (){ int a,b,c; int sum; cin> cin>>a>

2-2

相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人數了。輸入包含多組資料,每組資料包含3個非負整數a,b,c,表示每種隊形排尾的人數(a<3,b<5,c<7),輸出總人數的最小值(或報告

18.12.02-C語言練習:

  C語言練習:韓信點兵   題目說明:本題是中國經典問題,有多種解法,從數論課程角度看,是一個不定方程組,而且答案不唯一。 但這裡採用程式解法,使用的是暴力破解。列舉可能的解,然後根據條件判斷,滿足所有條件時的數字就是所求解。   程式: 1 #inc

(PTA練習):C語言實現

在中國數學史上,廣泛流傳著一個“韓信點兵”的故事:韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點兵的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數: 按從1至5報數,記下最末一個士兵報的數為1; 再按

(南陽理工)

描述 相傳韓信才智過人,從不直接清點自己軍隊的人數,只要讓士兵先後以三人一排、五人一排、七人一排地變換隊形,而他每次只掠一眼隊伍的排尾就知道總人數了。輸入3個非負整數a,b,c ,表示每種隊形排尾的人數(a<3,b<5,c<7),輸出總人數的