您现在的位置是:首页 >技术交流 >算法修炼之练气篇——练气一层网站首页技术交流
算法修炼之练气篇——练气一层
博主:命运之光
专栏:算法修炼之练气篇
前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的,练完这200多道题就考了今年第十四届的B组蓝桥杯C/C++获得了省一,后面还会更新“算法修炼之筑基篇”里面包括了省赛到国赛这一个月训练的刷奖计划,大概有40道左右,感兴趣的话可以关注一下命运之光)
目录
题目1157: 亲和数
这道题很简单,我写的也很简单,看一眼就懂
题目描述
古希腊数学家毕达哥拉斯在自然数研究中发现,220的所有真约数(即不是自身的约数)之和为:
1+2+4+5+10+11+20+22+44+55+110=284。
而284的所有真约数为1、2、4、71、 142,加起来恰好为220。人们对这样的数感到很惊奇,并称之为亲和数。一般地讲,如果两个数中任何一个数都是另一个数的真约数之和,则这两个数就是亲和数。
你的任务就编写一个程序,判断给定的两个数是否是亲和数
分析
这道题主要就是要读懂什么是真约数。
所为真约数举个例子就是约束不包含自己本身
例:
比如6的约数是1、2、3、6
而真约数是1、2、3
约束算法
for (i = 2; i <= num; i++)//真约束就把i<=num改为i<num即可
{
if (num % i == 0)
{
printf("%d", i);
}
else
{
continue;
}
}
下面就改一改将输出所有约束改为累加所有约束
for(i=1;i<num;i++)
{
if(num%i==0)
{
sum=sum+i;//累加所有真约束和
}
else
{
continue;
}
}
整理
#include<stdio.h>
int main()
{
int i,M,sum=0;
int A,B;
scanf("%d",&M);
while(M--)
{
scanf("%d %d",&A,&B);
for(i=1;i<A;i++)
{
if(A%i==0)
{
sum=sum+i;
}
else
{
continue;
}
}
if(sum==B)
{
printf("YES
");
}
else
{
printf("NO
");
}
sum=0;
}
return 0;
}
题目 1687: 数据结构-字符串连接
将给定的字符串连接起来。书中的算法描述如下:
图:字符串连接算法
输入格式
三对字符串,每对字符串占一行,用空格隔开。每个字符串只包含数字和英文字母大小写且长度不超过100。
输出格式
将后一个字符串连接到前一个字符串后面,如果结果字符串长度超过100,输出一行“Result String is cutted.”否则将结果字符串输出来。
样例输入
hello dotcpp 123 456 doyour best
样例输出
hellodotcpp 123456 doyourbest
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
for(int i=0;i<3;i++)
{
cin>>s1>>s2;
if(s1.length()+s2.length()>100)
{
cout<<"Result String is cutted."<<endl;
}
else
{
cout<<s1+s2<<endl;
}
}
return 0;
}
题目 1477: 字符串输入输出函数
题目描述
编写函数GetReal和GetString,在main函数中分别调用这两个函数。在读入一个实数和一个字符串后,将读入的结果依次用printf输出。
两次输入前要输出的提示信息分别是" please input a number:
”和" please input a string:
"
输入格式
无
输出格式
无
样例输入
9.56 hello
样例输出
please input a number: please input a string: 9.56 hello
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
cin>>s1>>s2;
cout<<"please input a number:"<<endl;
cout<<"please input a string:"<<endl;
cout<<s1<<endl;
cout<<s2<<endl;
return 0;
}
题目 3012: 分苹果
题目描述
把一堆苹果分给n个小朋友,要使每个人都能拿到苹果,而且每个人拿到的苹果数都不同的话,这堆苹果至少应该有多少个?
输入格式
一个不大于1000的正整数n,代表小朋友人数。
输出格式
一个整数,表示满足条件的最少苹果个数。
样例输入
8
样例输出
36
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
cout<<(1+n)*n/2;
return 0;
}
题目 2772: 苹果和虫子(秒杀题,随便写)
题目描述
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?
输入格式
输入仅一行,包括n,x和y(均为整数)。输入数据保证y <= n * x。
输出格式
输出也仅一行,剩下的苹果个数。
样例输入
10 4 9
样例输出
7
提示
注意:是要求完整的苹果数。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,x,y;
cin>>n>>x>>y;
int a,b;
a=y/x;
b=y%x;
if(b!=0)
{
a=a+1;
}
cout<<n-a;
return 0;
}