比赛上能给你提供助力的不是,你有多花里胡哨的算法,而是简单实用的,快速的算法。
为比赛准备:用最少的代码写上代码:
不支持:c++11以后 最新支持C++11了开心
辗转相除法 最大公约数 最小公倍数
int gcd(int m,int n)
{
int r=m;
while(r!=0)
{
r=m%n;
m=n;
n=r;
}
return m;
}
printf(“lcm=%d\n”,a*b/gcd(a,b))最小公倍数
四舍五入
#include <math.h>
int round(double a){
return a>0.0? floor(a+0.5):ceil(a-0.5);
}
闰年判断
bool is_run(int yyyy){
if((yyyy%4==0&&yyyy%100!=0)||(yyyy%100==0&&yyyy%400==0)){
return true;
}
return false;
}
素数质数判断
#incldue <math.h>
bool is_prime(int pr){
if(pr<=1){
return false;
}
for(int i=2;i<=sqrt(pr);i++){
if(pr%i==0){
return false;
}
}
return true;
}
回文数判断
//javac语言c++一样吧
bool is_Palindrome(int Pa){
int temp=Pa,original=0;
while(temp){
int remainder=temp%10;
original=original*10+remainder;
temp=temp/10;
}
}
if(Pa==original){
return true;
}else{
retrun false;
}
计算阶乘
fa=1;
unsigned int is_fac(int f){
unsigned int fa = 1;
for(int i=1;i<=f;i++){
fa=fa*i;
}
return fa;
}
创建各类三角形图案
void prin(){
}
求时间
//time = 秒值
int day = ceil(time/3600/24);
int house = ceil(time/3600%24);
cout<<house;
int month = ceil(time/60%60);
cout<<month;
int sesoth = ceil(time%60);
水仙花数
什么是水仙花数:153 = 1^3 +5^3 +3^3;
// java
public static int[] to_int(int a){
int [] aa = new int[3];
aa[2] = a%10;
a = a/10;
aa[1] = a%10;
a = a/10;
aa[0] = a%10;
return aa;
}
public static void main(String[] args) {
for (int i=100;i<1000;i++){
int aa[] = to_int(i);
if(aa[0]*aa[0]*aa[0]+aa[1]*aa[1]*aa[1]+aa[2]*aa[2]*aa[2]==i){
System.out.println(i); // 153 370 371 407
}
}
}
九九乘法表
public static void main(String[] args) {
for (int i=1;i<10;i++){
for (int j=1 ; j<i+1;j++){
if (j>=2){
System.out.print(" ");
}
System.out.print(i +"+" +j + "=" + i+j);
}
System.out.println();
}
}