C语言每日一题:16:数对。

这篇具有很好参考价值的文章主要介绍了C语言每日一题:16:数对。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C语言每日一题:16:数对。,c语言,开发语言

思路一:基本思路

1.x,y均不大于n,就是小于等于n。
2.x%y大于等于k。
3.一般的思路使用双for循环去遍历每一对数。

代码实现:

#include <stdio.h>
int main()
{
   int n = 0;
   int k = 0;
   //输入
   scanf("%d%d", &n, &k);

   int x = 0;
   int y = 0;
   long long count = 0;
   
    for(x=1;x<=n;x++)
    {
        for(y=1;y<=n;y++)
        {
            if(x%y>=k)
            count++;
        }
    }
   printf("%lld", count);
   return 0;
}

我们的运行结果是
我们在vs2022下测试代码的结果是正确的什么说明我们的代码思路是没有问题可以计算出结果但是呢,题目要求时间限制是1s,在vs运行出结果至少用了十秒。说明我们的时间复杂度过高当n比较大时时间复杂度是特别高的。C语言每日一题:16:数对。,c语言,开发语言

思路二:寻找规律推导公式

C语言每日一题:16:数对。,c语言,开发语言文章来源地址https://www.toymoban.com/news/detail-642850.html

#include <stdio.h>
int main()
{
   long n = 0;
   long k = 0;
   //输入
   scanf("%ld%ld", &n, &k);
   long count = 0;

   //1.当k=0的时候。
   if(k==0)
   {
        count=n*n;
   }
   else 
   {
        //只遍历我们行
        for(long y=k+1;y<=n;y++)
        {
           //计算对角线右
            long help = n % y < k ? 0 : (n % y) - k + 1;
            //计算对角线左
            count += (y - k) * (n / y) + help;
        }
   }
   
   printf("%ld\n",count);
   return 0;
}

到了这里,关于C语言每日一题:16:数对。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Leetcode-每日一题【剑指 Offer 16. 数值的整数次方】

    实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 示例 1: 输入: x = 2.00000, n = 10 输出: 1024.00000 示例 2: 输入: x = 2.10000, n = 3 输出: 9.26100 示例 3: 输入: x = 2.00000, n = -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25 提示: -10

    2024年02月13日
    浏览(38)
  • 【每日一题Day245】面试题 16.19. 水域大小 | dfs

    你有一个用于表示一片土地的整数矩阵 land ,该矩阵中每个点的值代表对应地点的海拔高度。若值为0则表示水域。由垂直、水平或对角连接的水域为池塘。池塘的大小是指相连接的水域的个数。编写一个方法来计算矩阵中所有池塘的大小,返回值需要从小到大排序。 dfs感染

    2024年02月10日
    浏览(49)
  • 2023/07/11_leetcode每日一题_16. 最接近的三数之和

    给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 和三数之和那道题一样,排序加双指针

    2024年02月15日
    浏览(61)
  • C语言每日一题

    今天分享的是一道牛客网上面的题目,链接在下面 有序序列合并 这道题做法有很多,最简单的是合并一起,然后用排序就行了,今天将一个最高效的办法,思路是两个数组第一项进行比较,小的先输出,输出的那个数组的下标往后移动,然后再进行比较,如果是另一个数组

    2024年02月12日
    浏览(37)
  • C语言——每日一题

    倒置字符串 要将每一个单词逆序输出,首先可以将整个字符串内容都逆序输出,然后再将字符串中的每一个单词再进行逆序。 例如:逆序 i like beijing. 先逆序成: .gnijieb ekil i 再将每个单词逆序: beijing. like i 1.1 字符串的读取 先创建一个字符数组: char arr[101]; (因为题目中

    2024年02月07日
    浏览(37)
  • 【C语言】每日一题---1

    大家好,我是苏貝,本篇博客是系列博客每日一题的第一篇,本系列的题都不会太难,如果大家对这种系列的博客感兴趣的话,可以给我一个赞👍吗,感谢❤️ 下面代码的结果是: A. B. C.不输出 D.程序有问题 答案:A 解析:全局变量,没有给初始值时,编译其会默认将其初

    2024年02月13日
    浏览(30)
  • C语言每日一题—魔幻矩阵

    2024年04月17日
    浏览(33)
  • 【C语言】每日一题,快速提升(2)!

    🔥 博客主页 🔥 :【 坊钰_CSDN博客 】 欢迎各位点赞 👍 评论 ✍收藏⭐  题目: 杨氏矩阵 有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在 解答: 1. 我们仔细分析,不难发现,对于杨氏矩阵老说,

    2024年04月22日
    浏览(45)
  • C语言每日一题:15:寻找峰值。

    题目链接

    2024年02月13日
    浏览(33)
  • 【C语言】每日一题,快速提升(4)!

    🔥 博客主页 🔥 :【 坊钰_CSDN博客 】 欢迎各位点赞 👍 评论 ✍收藏⭐ 题目: 实现计算机程序 解答: 该程序运用函数指针数组,具体请看代码 代码:

    2024年04月25日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包