import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int ans = 0; // 答案
// i从7遍历到n,判断i是否能被7整除,即i % 7 == 0,是则ans+1,否则再判断i是否包含7,是则ans+1
for (int i = 7; i <= n; i++) { // 跳过1-6,与7无关
if (i % 7 == 0) {
ans++;
} else {
// 使用整数的计算,比使用String.contains快
// 通过将cur不断除以10再求余,可获得cur每一位的数
// 如:171,171/10 == 17, 17 % 10 == 7
int cur = i;
while (cur > 0) {
int mod = cur % 10;
if (mod == 7) {
ans++;
break;
}
cur /= 10;
}
}
}
System.out.println(ans);
}
} import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int n = Integer.parseInt(str);
int count = 0;
for(int i = 1; i <= n; i++){
if(String.valueOf(i).contains("7")||i%7==0){
count++;
}
}
System.out.println(count);
}
} //一直在想能不能不遍历或者优化遍历跨度 实在不好想想抄答案 结果大家都是在遍历 那我放心留
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int res = 0;
for (int i = 1; i <= n; i++) {
if (String.valueOf(i).contains("7") || i % 7 == 0) {
res++;
}
}
System.out.println(res);
}
} nums = set()
i = 7
while i <= 30000:
nums.add(i)
i += 7
for i in range(1, 30001):
if str(i).find("7") != -1:
nums.add(i)
nums = list(sorted(nums))
try:
while True:
n = int(input())
count = 0
while nums[count] <= n:
count += 1
print(count)
except:
pass while True: try: n=int(input()) res=0 for i in range (7,n+1): if (i%7==0) or "7" in str(i): res+=1 print (res) except: break
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
int n = scan.nextInt();
int cnt = 0;
for(int i = 1; i <= n; i++){
if(is7(i)){
cnt++;
}
}
System.out.println(cnt);
}
}
private static boolean is7(int n){
if(n % 7 == 0){//7的倍数
return true;
}
while(n > 0){//包含7
int tmp = n / 10;
if(n - tmp * 10 == 7){
return true;
}
n /= 10;
}
return false;
}
} #include<iostream>
#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
bool contains7(int x) {
while(x!=0) {
if(x%10==7)
return true;
x/=10;
}
return false;
}
int main()
{
int n;
while(cin>>n) {
int ans=0;
for(int i=7;i<=n;++i) {
if(i%7==0 || contains7(i)) {
++ans;
}
}
cout<<ans<<endl;
}
return 0;
} import java.util.*;
public class Main{
public static void main(String []args){
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int n = in.nextInt();
int result = 0;
for(int i = 7; i <= n; i++){
if((String.valueOf(i)).contains("7"))
result++;
else if(i % 7 == 0)
result++;
}
System.out.println(result);
}
in.close();
}
} while True: try: num = int(input().strip()) if 0 < num <= 30000: count_7 = 0 for i in range(7,num+1): if i % 7 == 0&nbs***bsp;'7' in str(i): count_7 += 1 print(count_7) except: break
#include<stdio.h>
int main()
{
int N,i,j,k,cnt;
while(scanf("%d",&N)!=EOF)
{
if(N<7)
printf("0\n");
else
{
cnt=0;
for(i=7;i<=N;i++)
{
if(i%7==0)
{
cnt++;
}
else
{
k=i;
while(k>0)
{
if(k%10==7)
{
cnt++;
k=-1;
}
else
{
k=k/10;
}
}
}
}
printf("%d\n",cnt);
}
}
return 0;
} #include "string.h"
#include <stdio.h>
int youqi(int a)
{
int i=0;
while (a>0)
{
if (a%10==7) return 1;
a=a/10;
}
return 0;
}
int main (void)
{
int num;
while (scanf("%d",&num)!=EOF)
{
int i=0;
int p=0;
if (num<7) printf("0\r\n");
else
{
for (i=7;i<=num;i++)
{
if (youqi(i)==1)
{
p++;
}
else if (i%7==0) p++;
}
printf("%d\r\n",p);
}
}
} /**
* 思路:直接遍历 7-n 中的每个数,若能被7整除,或者含有7即可
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
System.out.println(selectSeven(scanner.nextInt()));
}
}
/**
* 挑7
* @return
*/
public static int selectSeven(int n) {
int sum = 0;
for (int i = 7; i <= n; i++) {
if (i % 7 == 0 || String.valueOf(i).contains("7")){
sum++;
}
}
return sum;
}
} import java.util.*;
public class Main
{
public static void main(String [] args)
{
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt())
{
int n=sc.nextInt();
int count=0;
for(int i=7;i<=n;i++)
{
String num=""+i;
if(i%7==0||num.contains("7"))
{
count++;
}
}
System.out.println(count);
}
}
}
//用函数判断,先判断是否为7的倍数,然后用取余和除法判断有没有带数字7
#include<iostream>
using namespace std;
bool judge(int n){//判断此数是否与7有关
if(n%7==0)
return 1;
else{
while(n>0){
if(n%10==7)
return 1;
n/=10;
}
return 0;
}
}
int main(){
int n;
while(cin>>n){
int count=0;
for(int i=6;i<=n;i++)
if(judge(i))
count++;
cout<<count<<endl;
}
return 0;
} #include<iostream>
#include<string>
#include<sstream>
using namespace std;
int main()
{
long int n;
while(cin>>n)
{
string str;
int i;
int num=0;
for(i=7;i<=n;i++)
{
stringstream a;
a<<i;
a>>str;
if(str.find('7')!=str.npos||(i%7==0))
{
num++;
}
}
cout<<num<<endl;
}
return 0;
}
使用sstream类进行转化,将long int 转换为string类型,进行判断。
#include <iostream>
#include <string>
using namespace std;
int main() {
int num_s;
while (cin >> num_s) {
int mun = 0;
for(int i = 1; i <= num_s; i++) {
if(i % 7 == 0 || to_string(i).find('7', 0) != string :: npos) {
mun++;
}
}
cout << mun << endl;
}
system("pause");
return 0;
}
//能除尽7 或者 有一位包含7