首页 > 编程语言 >竞赛算法经典入门 .2

竞赛算法经典入门 .2

时间:2024-02-26 23:23:57浏览次数:23  
标签:竞赛 入门 clock int max 算法 date include fin

//7744问题 #include<stdio.h>
#include<math.h>
int main()
{
    for(int a=1;a<=9;a++)
    for(int b=1;b<=9;b++) 
    {
        int n=a*1100+b*11;
        int m=floor(sqrt(n)+0.5) ;//floor(x)函数 ,
        //也称为下取整函数或地板函数,
        //是一种数学函数,用于将一个数向下取整到最接近的整数。 
        if(m*m==n)
        printf("%d\n",n);
    }
    
    return 0;
}
//为了减少误差的影响,一般改成四舍五入,即floor(x+0.5)。

floor(x)函数,也称为下取整函数或地板函数,是一种数学函数,用于将一个数向下取整到最接近的整数。也就是说,对于任意实数x,floor(x)返回不大于x的最大整数。

//枚举平方根x,从而避免开平方操作。
#include<stdio.h> 
int main()
{
    for(int x=1; ;x++)
    {
        int n=x*x;
        if(n<1000) continue;//continue是指跳回for循环的开始,
        //执行调整语句并判断循环条件(即“直接进行下一次循环”)
        if (n>9999 ) break;
        //break是直接跳出循环。
        int hi=n/100;
        int lo=n%100;
        if(hi/10==hi%10&&lo/10==lo%10)
        printf("%d\n",n); 
    }
    return 0;
}

//3n+1问题 

#include<stdio.h>
 int main()
 {
     int n2,count=0;
     scanf("%d",&n2);
     long long n=n2;
     while(n>1)
     {
         if(n%2==1)
         n=n*3+1;
         else
         n/=2;
         count++;
     }
     printf("%d\n",count);
     return 0;
 }

 //近似计算 

#include<stdio.h> 
 int main()
 {
     double sum=0;
     for(int i=0; ;i++)
     {
         double term=1.0/(i*2+1);
         if(i%2==0)
         sum+=term;
         else 
         sum-=term;
         if(term<1e-6) break;
     }
     printf("%.6f\n",sum);
     return 0;
 }

 //阶乘之和

#include<stdio.h>
 #include<time.h>
 int main() 
 {
     const int MOD =1000000;
     int n,S=0;
     scanf("%d",&n);
     for(int i=1;i<=n;i++) 
     {
         int factorial=1;
     for(int j=1;j<=i;j++) 
         factorial=(factorial*j%MOD);
         S=(S+factorial)%MOD;
      } 
      printf("%d\n",S);
      printf("Time used=%.2f\n",(double)clock()/CLOCKS_PER_SEC); 
     return 0;
 }

在C语言中,clock()函数是一个用于测量程序执行时间的库函数,它返回程序执行起(一般是程序的开头)到clock()函数被调用时止的CPU时钟计时单元(clock tick)数。这个函数通常用于粗略地测量代码段的执行时间。

CLOCKS_PER_SEC是一个在<time.h>头文件中定义的常量,表示每秒的时钟计时单元数,即系统时钟的频率。

(double)clock() / CLOCKS_PER_SEC这个表达式的含义是将clock()返回的时钟计时单元数转换为秒数。由于clock()返回的是clock_t类型的值,这通常是一个整数类型,所以在做除法之前先将其转换为double类型,以得到更加精确的时间值(秒数)。

(double)clock()/CLOCKS_PER_SEC这个表达式的结果大致表示了程序从某个点(通常是程序的开始)到调用clock()函数时经过的时间。

 //数据统计 

#define LOCAL
 #include<stdio.h>
 #define INF 1000000000
 int main()
 {
     #ifdef LOCAL
     freopen("date.in","r",stdin);
     freopen("date.out","w",stdout);
     #endif
     int x,n=0,min=INF,max=-INF,s=0;//负无穷大,注意这里的-INF应该是一个非常大的负数,
    // 而不是真正的负无穷大,因为C/C++中没有内置的负无穷大表示
     while(scanf("%d",&x)==1) 
     {
         s+=x;
         if(x<min) min=x;
         if(x>max) max=x;
         //printf("x=%d,min=%d,max=%d\n",x,min,max);
         
         n++;    
     }
     printf("%d %d %.3f\n",min,max,(double)s/n);
     return 0;
  }

在C和C++编程语言中,输入流通常与文件操作和标准输入(如键盘)相关联。

scanf("%d",&x)==1  如果输入流中当前有一个整数,并且没有其他非预期的字符或格式错误,scanf会读取这个整数,将其存储在x中,并返回1。如果输入流中当前没有整数,或者读取整数时遇到错误(比如,输入流已经到达文件末尾,或者输入流中包含非数字字符),则scanf将返回一个小于1的值。

  1. #ifdef LOCAL:这是一个预处理指令,用于检查是否定义了名为LOCAL的宏。如果定义了LOCAL,则编译器会编译下面的代码;如果没有定义,编译器会忽略这些代码。这通常用于调试目的,以便从文件中读取输入而不是从标准输入(如键盘)读取。
  2. freopen("date.in","r",stdin);:这行代码重新打开标准输入流stdin,使其指向名为date.in的文件,以读取模式("r"表示读取)打开。这样,接下来的scanf函数将从date.in文件中读取数据,而不是从键盘。
  3. freopen("date.out","w",stdout);:这行代码重新打开标准输出流stdout,使其指向名为date.out的文件,以写入模式("w"表示写入)打开。这样,接下来的printf或其他输出函数将把结果写入date.out文件,而不是显示在屏幕上。
  4. #endif:结束#ifdef LOCAL的条件编译块。
 #include<stdio.h>
  #define INF 1000000000
  int main()
  {
      FILE *fin,*fout
      fin=fopen("date.in","rb");
      fout=fopen("date.out","wb");
      int x,n=0,min=INF,max=-INF,s=0;
      while(fscanf(fin,"%d",&x)==1)
      {s+=x;
      if(x<min) min=x;
      if(x>max) max=x;
      n++;
      
      }
      fprintf(fout,"%d %d %.3f\n", min,max,(double)s/n);
      fclouse(fin);
      fclouse(fout);
      return 0;
          
      }
  }
 

fscanf(fin,"%d",&x)==1 

  • fin:这是一个文件指针,它指向你想要读取数据的文件。通常,这个文件指针会在之前通过 fopen 函数打开文件时获得。

  • 如果文件 fin 指向的位置有一个整数,并且没有其他非预期的字符或格式错误,fscanf 会读取这个整数,将其存储在 x 中,并返回 1。如果文件指针 fin 已经到达文件末尾,或者读取整数时遇到错误(比如,文件中包含非数字字符),则 fscanf 会返回一个小于 1 的值。
  • 通常,会在循环中使用 fscanf,以便从文件中连续读取多个整数,直到文件结束或遇到其他错误。

 

标签:竞赛,入门,clock,int,max,算法,date,include,fin
From: https://www.cnblogs.com/LCGJ/p/18035828

相关文章

  • 根号分治与莫队算法
    1.根号分治与分块在预处理与询问的复杂度之间寻找平衡的一个算法,通常以根号为分界线。属于智慧的暴力。1.1.根号平衡使用数学不等式对于阈值取一个值,使得复杂度最优。如果有阈值\(B\),若问题有一部分暴力可以\(O(B)\)解决,另一部分可以\(O(\frac{n}{B})\)解决。那么根据基......
  • 【算法】【字符串】无重复字符的最长子串
    1 题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长连续子字符串 的长度。示例 1:输入:s="abcabcbb"输出:3解释:因为无重复字符的最长子字符串是"abc",所以其长度为3。示例2:输入:s="bbbbb"输出:1解释:因为无重复字符的最长子字符串是"b......
  • 2024牛客寒假算法基础集训营4
    2024牛客寒假算法基础集训营4A 柠檬可乐题意根据给定的\(a\)和\(b\),判断是否\(a\gek\timesb\)思路题意非常直接代码/*******************************|Author:AlwaysBeShine|Problem:柠檬可乐|Contest:NowCoder|URL:https://ac.nowcoder.com/acm/......
  • day42 动态规划part4 代码随想录算法训练营 416. 分割等和子集
    题目:416.分割等和子集我的感悟:有点难,更快的解法用了01True和False所以更快理解难点:转化为背包问题听课笔记:代码示例:我优化了下classSolution:defcanPartition(self,nums:List[int])->bool:ifsum(nums)%2==1:returnFalse......
  • day42 动态规划part4 代码随想录算法训练营 46. 携带研究材料- 一维数组写法
    题目:46.携带研究材料我的感悟:一维是二维的压缩理解难点:倒序遍历j因为每轮的数字是由左上决定的。遍历的时候,从右侧遍历,是不会影响左侧的。听课笔记:代码示例:defbag_problem(weight,value,bagWeight):#初始化dp=[0]*(bagWeight+1)fori......
  • 【Flink从入门到精通 02】DataStream API
    【Flink从入门到精通02】DataStreamAPI在之前的文章中,我们介绍了Flink的安装部署、基础概念,今天我们来一起学习Flink的核心之一DataStreamAPI。01分布式流处理基础上图中,我们将整个代码分为了三个部分,即分布式流处理的基本模型:SourceTransformationSink从而,我们可以......
  • 算法入门:递归和迭代
    文章目录1.递归 1.1.概念1.2.案例1.3.优缺点2.迭代2.1.概念2.2.案例2.3.优缺点3.递归与迭代算法的关系和区别3.1.关系3.2.区别3.3.算法的选择 1.递归1.1.概念递归算法是一种解决问题的方法,其中问题被分解为更小、相似的子问题。这一方法通过不断调用自......
  • 简化 Python 日志管理:Loguru 入门指南
    简化Python日志管理:Loguru入门指南在开发和维护软件项目时,高效的日志管理系统对于监控应用程序的行为、调试代码和追踪异常至关重要。Python的标准日志模块虽然功能强大,但其配置和使用往往较为复杂,尤其是对于新手开发者。这就是Loguru库发挥作用的地方,它以极简的方式重新定......
  • day42 动态规划part4 代码随想录算法训练营 卡尔网46. 携带研究材料
    题目:卡尔网-46.携带研究材料我的感悟:有1个测试用例没通过。还要多练习理解难点:dp递推公式的由来,初始化的参数。听课笔记:代码示例:defbag_problem(weight,value,bagweight):#[1,3,4][15,20,30]4ifbagweight==1:index=weigh......
  • 动手实践丨轻量级目标检测与分割算法开发和部署(RK3568)
    本文分享自华为云社区《自动驾驶(AIOT)-轻量级目标检测与分割算法开发和部署(RK3568)【玩转华为云】》,作者:HouYanSong。本文将在ModelArts平台上开发轻量级目标检测与分割算法,并使用ModelBox框架在RK3568开发板上实现模型推理和部署。数据准备我们收集了一份200张由Labelme......