论坛里看到一个C++的小题目,练习一下小算法,题目是要找Ada IV型数,这个型数是每个位上的数构成一个等差数列,比如123456789,246都是,约定1-99都是Ada IV型数,其实这里不约也可以,因为两位数肯定是一个等差数列 。下面直接上C++代码
int min,max; cout<<"输入两个数"<<endl; cin>>min>>max; if(min>=max||min<0) cout<<"输入前数一定要比后面个数小 且不能小于0"; else { int ct=0; int i=min; for(i=min;i<=max;i++){ int n=i; if(n<100) { ct++; continue; } int pre=n%10; int d=(n/10)%10-pre; //距 bool b=false; while(n%10!=n){ n=n/10; if(d!=n%10-pre){ b=true; break; } pre=n%10; } if(!b) ct++; } cout<<"个数"<<ct<<endl; } system("pause");
总结:
运用循环处理数字位数,用一个pre记录上一次的属性,用本次与上一次比较来看结果。