
/** * 题目名称与7无关的数 p * 题目来源http://noi.openjudge.cn/ch0105/39/ p * 程序功能输出所有小于等于指定正整数的与7无关的正整数的平方和 * * author 潘磊just_panleijust.edu.cn * version 1.0 */importjava.util.Scanner;publicclassMain{/** * 判断指定整数是否为与指定数字相关的数。p * 这里相关的含义是指定整数能被指定数字整除或者指定整数某一数位上的数字为指定数字。 * * param num 指定整数。 * param digit 指定数字。 * return true当且仅当num是与digit相关的数否则false。 */publicbooleanisCorrelative(intnum,intdigit){if(num%digit0){// 如果num能被digit整除returntrue;// 说明num与digit相关}/* 在num尚未变为0时 */while(num!0){if(num%10digit){// 如果当前num的个位数是digitreturntrue;// 说明num与digit相关}num/10;// 移除当前num的个位数}returnfalse;// 以上没有返回true说明num与digit无关}/** * 返回指定区间内与指定数字无关的整数的平方和这里指定区间的起始边界为1。 * * param n 指定区间的终止边界。 * param digit 指定数字。 * return [1,n]区间内与digit无关的整数的平方和。 */publicintsquareSumOfNoncorrelative(intn,intdigit){intans0;// [1,n]区间内与digit无关的整数的平方和/* 从整数1依次遍历到整数n */for(inti1;in;i){if(!isCorrelative(i,digit)){// 如果当前整数与digit无关ansi*i;// 累加当前整数的平方}}returnans;}publicstaticvoidmain(String[]args){MaincallnewMain();ScannerinputnewScanner(System.in);intninput.nextInt();System.out.print(call.squareSumOfNoncorrelative(n,7));}}