#include <iostream> #include <algorithm> #include <string> using namespace std; int main() { long num; long num_square; while(cin >> num) { int count = 0; string num_str; for(int i=1;i<=num;++i) { num_str = to_string(i); if (num_str.find('7')!= num_str.npos||i%7==0) { ++count; } } cout << count << endl; } return 0; }
#include<iostream> #include<string> using namespace std; int main() { int n=0; while(cin>>n) { int num=0; for(int i=1;i<=n;i++) { if(i%7==0) num++; else { char c='7'; string s=to_string(i); for(int j=0;j<s.size();j++) { if(s[j]==c) { num++; break; } } } } cout<<num<<endl; } return 0; }
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类型,进行判断。