网易笔试题:找出指定区间数列中能被3整除的个数

题目描述:给定一个数列:1,12,123,...,12345678910,1234567891011...,找出指定区间能被3整除的个数。

输入描述:输入两个数字l和r,代表数列的第l个数和第r个数

输入描述:输出区间内能被三整除的个数

例:
输入:2 5

输出:3

因为12,123,1234,12345中能被3整除的有3个。

思路:该题涉及的数字比较大,不能直接用整形或是长整型来存储数字,可以用字符串来存储数字,判定能否被3整除的方法就是看将数字各位的数相加得到的数能否被3整除。

代码如下:

#include<iostream>
#include<string>
using namespace std;

bool divide(string str) {
    int num = 0;
    for (int i = 0; i < str.length(); i++) {
        num += (str[i] - ‘0‘);
    }
    if (num % 3 == 0) {
        return true;
    }
    return false;
}

int main() {
    int l = 0, r = 0, count = 0;
    string num = "";
    cin >> l >> r;
    for (int i = 1; i <= l; i++) {
        num += to_string(i);
    }
    for (int i = l; i <= r; i++) {
        if (divide(num))
            count++;
        num += to_string(i + 1);
    }
    cout << count << endl;
    return 0;
}

原文地址:https://www.cnblogs.com/lxing722/p/8660559.html

时间: 2024-10-08 16:57:57

网易笔试题:找出指定区间数列中能被3整除的个数的相关文章

找出此产品描述中包含N个关键字的长度最短的子串

阿里巴巴笔试题:给定一段产品的英文描述,包含M个英文字母,每个英文单词以空格分隔,无其他标点符号:再给定N个英文关键词,请说明思路并变成实现方法. String extractSummary(String description , String[] keyWords) 目标:找出此产品描述中包含N个关键字的长度最短的子串(20分) W0 W1 W2 W3  Q0 W4 W5 Q1 W6 W7 W8 Q0 W9 Q1 P335 <编程之美>上的参考代码: int nTarget = N + 1

2017乌鲁木齐区域赛K(容斥原理【求指定区间内与n互素的数的个数】)

#include<bits/stdc++.h>using namespace std;const long long mod = 998244353;typedef const long long ll;vector<long long>p;long long inv(long long x,long long y)//快速幂求逆元模板(以乘代除){    long long r=1;    while(y>0)    {        if(y&1)        

找出n个字符串中出现次数最多的字符串。

1. 找出n个字符串中出现次数最多的字符串. C/C++: char* find(char **data,int n); Java: String find(String data[]); 说明: 1. data是字符串数组,n是数组中字符串的个数,返回值为出现次数最多的字符串. 2. 若结果有多个,返回任意一个即可 3. 不得使用任何库函数/API,如需使用类似功能, 请自行实现 4. 算法效率尽可能高,尽量少的使用内存空间 5. 必须要有代码注释和算法说明. 例如:data里面的数据是{“p

找出个位数为6且能被3整除的五位数

根据:能被3整除的数其各位的总和也能被3整除的原则,个位6能被3整除,所以就只用考虑高位4位,在这里就可以采用如下方法获得最终结果 1 /*================================== 2 Copyright (C) 2014 All rights reserved. 3 FileName:3.c 4 author:donald 5 date:2014/08/16/ 23:35:55 6 ===================================*/ 7 #i

c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?

找出1到4000中,数字的各位数之和能被4整除的数,如:745:7+4+5=16,16可以被4整除:28:2+8=10,10不能被4整除:745就是这样的特殊数字,而28不是,求:这样的数字共有多少个? 解: (1)对于4000,4+0+0+0=4,显然4000是满足条件的数字: (2)对于1到3999,我们把每个数字看成4位[][][][]的形式,第一位[]取0到3,后3位取[0][0][0]到[9][9][9],用sum表示4位数字的和: 2.1:若后3位为一个奇数,则第1位取1或3,必定可

找出N个数据中的最大的K个数据---堆排序

从N个数据中找出最大的K个数据,而且这里有一个限制:内存里存不下所有的N个数据,但是可以存下K个数据.这就让我们打消了用排序的方法来解的念头. 在这里我们使用堆排序来完成. 因为我们只能有K个数据那么大的空间,所以我们建一个K大的堆,将N的前K个数据插入到堆中,然后调整堆.(对于堆结构不了解的可以查看我微博  http://helloleex.blog.51cto.com/10728491/1768758) 对于最大的K个数据,我们要怎么找出来呢.我们首先要确定我们是要用大顶堆还是小顶堆.  用

找出两个字符串中最长的相同子字符串

//找出两个字符串中最长的相同子字符串 public class Stringdemo { public static void main(String[] args) { String str1 = new String("eeabcde"); String str2 = new String("bcdefabcabcdedegg"); byte[] char1 = str1.getBytes(); byte[] char2 = str2.getBytes();

c语言代码编程题汇总:找出三个数据中最大的数值

找出三个数据中最大的数值 程序代码如下: 1 /* 2 2017年3月9日12:04:37 3 功能:找出三个数据中最大的数值 4 */ 5 #include"stdio.h" 6 7 int fun(int,int,int); 8 9 int main() 10 { 11 int a ,b,c; 12 13 printf("please input three number: \n"); 14 15 scanf("%d %d %d",&

9.5位操作(三)——给定一个正整数,找出与其二进制表示中1的个数相同,且大小最接近的那两个数

/** * 功能:给定一个正整数,找出与其二进制表示中1的个数相同,且大小最接近的那两个数. * (一个略大一个略小.) */ 三种方法: 方法一:蛮力法 方法二:位操作法 <span style="white-space:pre"> </span>/** * 方法:位操作法 * 思路:获取后一个较大的数 * 1)计算c0和c1.c1是拖尾1的个数,c0是紧邻拖尾1的作坊一连串0的个数. * 2)将最右边.非拖尾0变为1,其位置为p=c1+c0. * 3)将位p