01 約數(shù)個(gè)數(shù)
題目描述
本題為填空題,只需要算出結(jié)果后,在代碼中使用輸出語(yǔ)句將所填結(jié)果輸出即可。
1200000 有多少個(gè)約數(shù)(只計(jì)算正約數(shù))。
解題思路
枚舉,從1開(kāi)始一直到1200000本身都作為1200000的除數(shù),如果可以整除,則是它的約數(shù)
#include <iostream>
using namespace std;
int main() {
int n = 1200000;
int sum = 0;
for (int i=1; i<=1200000; i++) {
if (n % i ==0)
sum++;
}
cout << sum;
return 0;
}
02 平方和
題目描述
本題為填空題,只需要算出結(jié)果后,在代碼中使用輸出語(yǔ)句將所填結(jié)果輸出即可。
小明對(duì)數(shù)位中含有 2、0、1、9 的數(shù)字很感興趣,在 1 到 40 中這樣的數(shù)包括 1、2、9、10 至 32、39 和 40,共 28 個(gè),他們的和是 574,平方和是 14362。
注意,平方和是指將每個(gè)數(shù)分別平方后求和。
請(qǐng)問(wèn),在 1 到 2019 中,所有這樣的數(shù)的平方和是多少?
#include <iostream>
using namespace std;
int main()
{
long long ans=0;
int n;
for(int i=1;i<=2019;i++)
{
n=i;
while(n)
{
int m=n%10;
if(m==2||m==0||m==1||m==9)
{
ans+=i*i;
break;
}
n/=10;
}
}
cout<<ans;
return 0;
}
03 星期一
題目描述
本題為填空題,只需要算出結(jié)果后,在代碼中使用輸出語(yǔ)句將所填結(jié)果輸出即可。
整個(gè) 20 世紀(jì)(1901 年 1 月 1 日至 2000 年 12 月 31 日之間),一共有多少個(gè)星期一?(不要告訴我你不知道今天是星期幾)
#include<stdio.h>
int main()
{
int i,s=0;
for(i=1901;i<=2000;i++)
{
if(i%4==0&&i%100!=0||i%400==0)
{
s++;
}
}
s=(365*100+s);
printf("%d",s/7);
return 0;
}
04 猴子分香蕉
題目描述
本題為填空題,只需要算出結(jié)果后,在代碼中使用輸出語(yǔ)句將所填結(jié)果輸出即可。
5 只猴子是好朋友,在海邊的椰子樹(shù)上睡著了。這期間,有商船把一大堆香蕉忘記在沙灘上離去。
第 1 只猴子醒來(lái),把香蕉均分成 5 堆,還剩下 1 個(gè),就吃掉并把自己的一份藏起來(lái)繼續(xù)睡覺(jué)。
第 2 只猴子醒來(lái),把香蕉均分成 5 堆,還剩下 2 個(gè),就吃掉并把自己的一份藏起來(lái)繼續(xù)睡覺(jué)。
第 3 只猴子醒來(lái),把香蕉均分成 5 堆,還剩下 3 個(gè),就吃掉并把自己的一份藏起來(lái)繼續(xù)睡覺(jué)。
第 4 只猴子醒來(lái),把香蕉均分成 5 堆,還剩下 4 個(gè),就吃掉并把自己的一份藏起來(lái)繼續(xù)睡覺(jué)。
第 5 猴子醒來(lái),重新把香蕉均分成 5 堆,哈哈,正好不剩!
請(qǐng)計(jì)算一開(kāi)始最少有多少個(gè)香蕉。
#include<iostream>
using namespace std;
int main()
{
for(int n=10;;n++)
{
int x1=n-n/5-1; //第1只猴子剩下的香蕉數(shù)量
int x2=x1-x1/5-2;//第2只猴子剩下的香蕉數(shù)量
int x3=x2-x2/5-3;
int x4=x3-x3/5-4;
int x5=x4-x4/5;
//判斷第一只猴子平均分成五份后是否有多余1個(gè)香蕉,再判斷第二只猴子平均分成五份后是否還剩余2個(gè)香蕉,以此類推
//注意:一定要判斷x4是否等于0 ,要確保最后一個(gè)猴子能拿到香蕉
if(n%5==1&&x1%5==2&&x2%5==3&&x3%5==4&&x4%5==0&&x4!=0)
{
cout<<n<<endl;
return 0;
}
}
return 0;
}
05 合數(shù)個(gè)數(shù)
題目描述
本題為填空題,只需要算出結(jié)果后,在代碼中使用輸出語(yǔ)句將所填結(jié)果輸出即可。
一個(gè)數(shù)如果除了 1 和自己還有其他約數(shù),則稱為一個(gè)合數(shù)。例如:1,2,3 不是合數(shù),4, 6是合數(shù)。
請(qǐng)問(wèn)從 1 到 2020 一共有多少個(gè)合數(shù)。
#include <iostream>
using namespace std;
int main()
{
// 請(qǐng)?jiān)诖溯斎肽拇a
int cnt=0;
for(int i=3;i<=2020;i++){
for(int j=2;j<i;j++){
if(i%j==0){
cnt++;
break;
}
}
}
printf("%d",cnt);
return 0;
}
06 玩具蛇
題目描述
本題為填空題,只需要算出結(jié)果后,在代碼中使用輸出語(yǔ)句將所填結(jié)果輸出即可。
小藍(lán)有一條玩具蛇,一共有 16 節(jié),上面標(biāo)著數(shù)字 1 至 16。每一節(jié)都是一個(gè)正方形的形狀。相鄰的兩節(jié)可以成直線或者成 90 度角。
小藍(lán)還有一個(gè) 4 × 4 的方格盒子,用于存放玩具蛇,盒子的方格上依次標(biāo)著字母 A 到 P 共 16 個(gè)字母。
小藍(lán)可以折疊自己的玩具蛇放到盒子里面。他發(fā)現(xiàn),有很多種方案可以將玩具蛇放進(jìn)去。
下圖給出了兩種方案:
玩具蛇思路:難點(diǎn)是如何用代碼抽象出來(lái)題目的條件,其實(shí)我們可以自己模擬一下放玩具蛇的過(guò)程,相鄰的節(jié)數(shù)滿足直線和九十度,可以抽象成,下一節(jié)的放置是上一節(jié)模擬上下左右移動(dòng)的過(guò)程,那么這就是一個(gè)dfs的模板題了
#include <iostream>
using namespace std;
int graph[4][4];
int visited[4][4];
int dx[4] = { 1,-1,0,0 };
int dy[4] = { 0,0,1,-1 };
int ans = 0;
int count1 = 0;
void dfs(int i, int j)
{
if (count1 >= 15)
{
ans++;
return;
}
for (int k = 0;k < 4; k++)
{
int x = i + dx[k];
int y = j + dy[k];
if (x >= 0 && x < 4 && y >= 0 && y < 4 && visited[x][y] == 0)
{
visited[x][y] = 1;
count1++;
dfs(x, y);
count1--;
visited[x][y] = 0;
}
}
}
int main()
{
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j++)
{
visited[i][j] = 1;
dfs(i, j);
visited[i][j] = { 0 };
count1 = 0;
}
}
cout << ans << endl;
return 0;
}
07 矩形切割
#include<stdio.h>
int main()
{
int i,a=2019,b=324;
for(i=1;a!=b;i++)
{
if(a>b)a=a-b;
else b=b-a;
}
printf("%d",i);
}
08 美麗的 2
#include <iostream>
using namespace std;
int main()
{
int n=0;
for(int i=2;i<=2020;i++)
{
int temp=i;
while(temp>0)
{
if(temp%10==2)
{
n++;
break;
}
temp/=10;
}
}
cout<<n<<endl;
// 請(qǐng)?jiān)诖溯斎肽拇a
return 0;
}
09 一步之遙
題意
小明有兩種操作:操作1,使數(shù)字加97,操作2,使數(shù)字減127,問(wèn)小明把0變成1至少要幾步?
分析
由貝祖定理可知給予二個(gè)整數(shù)a、b,必存在整數(shù)x、y使得ax + by = gcd(a,b) ,且存在x < b, y < a滿足等式。因?yàn)間cd(97, 127) = 1,所以可以斷定小明可以把0變成1,并且步數(shù)在97 + 127步之內(nèi)。只需要設(shè)計(jì)一個(gè)O(n^2)復(fù)雜度的算法即可滿足需求。
解法
枚舉操作1和操作2的次數(shù),若結(jié)果剛好為1,記錄為可能答案,在所有可能答案中選一個(gè)最小值即可。
提高
擴(kuò)展歐幾里得算法可以快速求得x和y的值。時(shí)間復(fù)雜度O log(min(a,b))
詳見(jiàn)連接 https://blog.csdn.net/destiny1507/article/details/81750874
#include <iostream>
using namespace std;
int main() {
int ans = 600;//答案必然在600以內(nèi)
for (int i = 0; i <= 300; i++) {//枚舉操作1
for (int j = 0; j <= 300; j++) {//枚舉操作2
if (i * 97 - j * 127 == 1) ans = min(ans, i + j);//求最小答案
}
}
printf("%d\n", ans);
return 0;
}
法二文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-718166.html
#include<bits/stdc++.h>
using namespace std;
int main()
{
//感覺(jué)是數(shù)學(xué)問(wèn)題
//列個(gè)方程:97x-127y=1. x為F的操作次數(shù),y為B的操作次數(shù)
//所以y=(1+127x)/97;
int pos=0;
int x=0,y=0;
for(int i=1;i<=1000;i++)
{
if((1+127*i)%97==0)//遍歷找到x
{
x=i;
y=(1+127*i)/97;
break;
}
}
cout<<x+y;
return 0;
}
10 煤球數(shù)目
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-718166.html
#include <iostream>
using namespace std;
int main()
{
int cengshu,first=1,sum=0; //每層的個(gè)數(shù)等于上一層的個(gè)數(shù)加層數(shù)//
for(cengshu=1; cengshu<=100; cengshu++)
{
sum=sum+first;
first=first+(cengshu+1);
}
cout<<sum<<endl;
// 請(qǐng)?jiān)诖溯斎肽拇a
return 0;
}
到了這里,關(guān)于藍(lán)橋杯 題庫(kù) 簡(jiǎn)單 每日十題 day3的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!