(笔试题)被3和5整除的数的和

题目:

给定一个数n, 求不超过n的所有的能被3或者5整除的数的和。例如: n = 9,答案3 + 6 + 5 + 9 = 23。

思路:

能被3或者5整除的数是哪些?

被3整除的数:3,6,9....[n/3]*3

被5整除的数:5,10,15...[n/5]*5

重复的数(同时被3和5整除的数,即被15整除):15,30...[n/15]*15

于是问题的答案就很明显:

被3或者5整除的数的和=被3整除的数之和+被5整除的数之和-被15整除的数之和

因为求和的数列都是等差数列,运用等差数列求和公式即可轻松解决。

  • x是首项,y是项数, d是公差
  • (x  +  x + d * (y – 1)) * y / 2, 注意y = 0也适用

代码:

#include <iostream>

using namespace std;

int SumOfArithmeticSeries(int x,int c,int d){
    return (x+x+(c-1)*d)*c/2;
}

int main()
{
    int sum_3=0,sum_5=0,sum_15=0;
    int n=9;
    int sum=0;
    sum_3=SumOfArithmeticSeries(3,n/3,3);
    sum_5=SumOfArithmeticSeries(5,n/5,5);
    sum_15=SumOfArithmeticSeries(15,n/15,15);
    sum=sum_3+sum_5-sum_15;
    cout<<sum<<endl;
    return 0;
}

  

时间: 2024-10-04 19:52:43

(笔试题)被3和5整除的数的和的相关文章

【美团笔试题】连续最大子序列整除k

[思路] 滑动窗口"掐头去尾" [正确代码] 1 import java.util.Scanner; 2 3 public class Main { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.in); 6 while (sc.hasNext()) { 7 int n = sc.nextInt(); 8 int[] arr = new int[n]; 9 for (int i

(笔试题)最小的非“重复的数”

题目: 给一个定义:对一个整数,若其中存在相邻两位上的数字相同,则称其为“重复的数”:现给定一个正整数n,求不小于n的最小的非“重复的数”. 思路: 假设输入的数为n,则令m=n, 分别取m的最低两位数字a,b, 判断是否a==b,如果是说明是重复的数,那么递归调用n=m+1;考虑特殊情况,ab=99,产生进位后100仍未重复数,此时应该递归调用n=m+2: 如果a!=b,则往前挪一位,即m=m/10,直至m/10=0为止,最后返回n. 该思路也可以通过非递归来实现,详见代码. 代码: #inc

有意思的笔试题记录与分析

昨天参加了某公司的笔试,总的来说题目很简单.但是还是有几个个题目是很有意思的,拿来和大家分享下! 1.小周带着他的鸵鸟穿越1000公里的沙漠,运送3000颗白菜.已知鸵鸟一次性可驼1000颗白菜,但每走1公里又要吃掉1棵白菜,问:小周最终可以运多少颗白菜? 分析:记得以前算法设计书上有个类似的油车过沙漠的问题,当时这问题是用倒推法来解决的,因为它有个结题突破口:油车以最少的耗油量穿过沙漠.本题同是过沙漠问题,但是却没有像油车过沙漠的解题突破口,怎么办呢?我们先想一个极限:让小周直接带着1000颗

关于阿里的一道笔试题分析

其题目如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #pragma pack(2) class A { public:     int i;     union U     {         char buff[13];         int i;     }u;     void foo() {    }     typedef char* (*f)(void*);     enum{red, green, blue} color; }a; class A

某公司笔试题解读(一)

上午刚参加完一公司的笔试,整个笔试给我的感受是,比较基础也很全面.但自己就是有好多不确定,好多需要时间思考,总之就是基础需要补回来.下面我就总结一下这次的笔试,举一反三地把相关知识点也梳理下. 一.最让我抓狂的SQL题 这种SQL题我以前做过好多次了,工作两年多用得少,SQL也写得不多,运用SQL的思维能力都下降了.题目大概是“有一张销售营业额表(t_sales),表结构如下: CREATE TABLE t_sales( t_person VARCHAR(20), #销售人员 t_item VA

C#常见笔试题

1.产生20个不同的两位整数的随机数,并且对它们进行由小到大的排序.特别提醒:程序要自动生成20个不同的整数,而且这些整数必须是两位的,如:3不是两位整数,58是两位整数 List<int> numbers= new List<int>(); Random rnd = new Random(); int i = 0; while (i < 20) { int s = rnd.Next(10, 100); //注意s的值大于等于10小于100 if (!numbers.Cont

C/C++ 笔试题

/////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体.与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行(3)拥有资源:进程是拥有资源的独立单位,线程不拥有系统资源,但可以访问

python 饥饿的小易(网易笔试题)

本周早些时候,学弟给我发了一道网易的笔试题,饥饿的小易,感觉有点意思-分享给大家 题目描述: 小易总是感觉饥饿,所以作为章鱼的小易经常出去寻找贝壳吃.最开始小易在一个初始位置x_0.对于小易所处的当前位置x,他只能通过神秘的力量移动到 4 * x + 3或者c.因为使用神秘力量要耗费太多体力,所以它只能使用神秘力量最多100,000次.贝壳总生长在能被1,000,000,007整除的位置(比如:位置0,位置1,000,000,007,位置2,000,000,014等).小易需要你帮忙计算最少需要

【转】嵌入式软件工程师经典笔试题

嵌入式软件工程师经典笔试题 > 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清晰而没有代价的. 3).