51NOD-1082-与7无关的数
来源:互联网 发布:数据库union和join 编辑:程序博客网 时间:2024/05/18 15:26
1082 与7无关的数
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1082
题目
一个正整数,如果它能被7整除,或者它的十进制表示法中某个位数上的数字为7,则称其为与7相关的数。求所有小于等于N的与7无关的正整数的平方和。
例如:N = 8,<= 8与7无关的数包括:1 2 3 4 5 6 8,平方和为:155。
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000)
第2 - T + 1行:每行1个数N。(1 <= N <= 10^6)
Output
共T行,每行一个数,对应T个测试的计算结果。
Input示例
5
4
5
6
7
8
Output示例
30
55
91
91
155
例如:N = 8,<= 8与7无关的数包括:1 2 3 4 5 6 8,平方和为:155。
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 1000)
第2 - T + 1行:每行1个数N。(1 <= N <= 10^6)
Output
共T行,每行一个数,对应T个测试的计算结果。
Input示例
5
4
5
6
7
8
Output示例
30
55
91
91
155
题解:提前预处理10^6以内的与7相关的数。用longlong和平方和公式计算1-N的平方和,然后减去比N小的与7相关的数即可。求平方和需要特殊处理,不然会爆longlong。
AC代码:
#include<iostream>using namespace std;long long n;long long ans;int k[1000007];int t;int d = 0;int judge(long long x){ while(x>0) { long long y = x%10; if(y==7) { //cout<<x<<endl; return 1; } x/=10; } return 0;}void intc(){ for(long long i=1;i<1000000;i++) { if(i%7==0) { k[d++]=i; } else if(judge(i)) { k[d++]=i; } }}int main(){ cin>>t; intc(); while(t--) { cin>>n; if(n&1)ans = (2*n+1)*(n+1)/2*n/3; else if(n%6==0)ans = n/6*(n+1)*(2*n+1); else ans = (2*n+1)*(n+1)/3*(n/2); for(int i=0;n>=k[i];i++) { ans-=(long long)k[i]*k[i]; } cout<<ans<<endl; } return 0;}
阅读全文
0 0
- 51nod 与7无关的数
- 51nod-1082 . 与7无关的数
- 51nod 1082 与7无关的数
- 51Nod-1082-与7无关的数
- 51nod 1082 与7无关的数
- 51nod-【1082 与7无关的数】
- 51nod 1082 与7无关的数
- 51Nod 1082 与7无关的数
- 51nod 1082 与7无关的数
- 51nod 1082 与7无关的数【打表】
- 51Nod 1082 与7无关的数
- 51 nod 1082 与7无关的数
- 51 nod 1082 与7无关的数
- 【51Nod】1082 与7无关的数
- 51Nod 1082 与7无关的数
- 51nod 1082 与7无关的数
- 51nod 1082 与7无关的数
- 51Nod 1082 与7无关的数 (打表)
- 分享一个算法,计算能在任何背景色上清晰显示的前景色
- c++中count函数的用法、cin>>hex>>a
- android数据存储之SQLite的使用
- 【思路】1.后台登录
- 三子棋小游戏
- 51NOD-1082-与7无关的数
- C和指针之动态内存分配之编程练习3
- XPS15 9560 UBUNTU安装
- 程序员到底该怎么找资源?
- ELKB6.0部署记录
- 【思路】2.权限控制
- centos 6.8 搭建LAMP环境及配置
- 并发工具类(三)控制并发线程的数量 Semphore
- Raptor中生成任意范围的随机数