分段多位数乘法4千乘以4千与4千乘以8位的原则是一样的,从左到右相乘,最高位相乘后,往后位的进位与前位相加。不想再设计了,这里只做描述和一个8位相乘的代码例子记录,估计的虽说堪舆傅里叶变换快速乘法媲美,还是觉得稍逊一点。同样的道理可用加法、减法、除法,其重点就是对进位用加法进行处理,而一次可以处理多位,受数据类型位数的限制,只能取其位数的一半-1位作为乘法,加法、减法、除法则可达18位推理的位数。
从低位往高位算也是一样的原则,(有一点区别就是要让进位暂存,等运算完成后再用加法计算进位。)从程序写作来说,从高位往低位进行运算写程序比较方便。
说白了就是传统的算法把多位数当作1位...
void 水仙十全十美()
{
long long 数 = 153, 和 = 0, 幕 = 数, 借 = 数, 方 = 1;
while (数 <= 18000000000000000000)
{ //缘由https://bbs.bccn.net/thread-499381-1-1.html
if (幕)
方 *= 借 % 10, 幕 /= 10;
else if (借)
幕 = 数, 和 += 方, 方 = 1, 借 /= 10;
else if (和 == 数)
cout << 和 << ends, ...
int aaa = 0, aaaa = 0, a = 111, aa = a, jc = a; string zc = "";
while (a < 999)
{ //缘由https://bbs.bccn.net/thread-499358-1-1.html
if (aa)aaa = aa % 10, aaaa += aaa*aaa*aaa, aa /= 10;
else
if (jc == aaaa || zc.find(to_string(aaaa)) != string::npos)
cout << a << "固定=>" << j...
Sub 狐狸找兔子(ByVal 数组() As Integer, Optional ByVal 找位 As Integer = 0, Optional ByVal 序位 As Integer = 1)
Dim 选 = ""
Do
找位 = 找位 Mod 10
Console.WriteLine(数组(找位))
Console.WriteLine(序位.ToString("间隔0"))
If 选.Contains(数组(找位)...
Sub 递归逆向(ByVal 数 As Integer)
Console.Write(数 Mod 10)
数 = 数 - (数 Mod 10)
数 = 数 / 10
If 数 > 0 Then
递归逆向(数)
Else
Console.WriteLine()
End If
End Sub
int aa = 111, aaa = 0, aaaa = 0, a = aa;
while (a < 999)
{ //缘由https://bbs.bccn.net/viewthread.php?tid=499370&pid=2719622&page=1#pid2719622
if (aa)aaa = aa % 10, aaaa += aaa*aaa*aaa, aa /= 10;
else
if (a == aaaa)cout << a << ends, aa = ++a, aaaa = 0; else aa = ++a, ...
Sub Main()
继续:
Dim 测时 As New Diagnostics.Stopwatch
测时.Start()
'===============================================================================================================
Dim 数 = 1000000000000000000
While 数 <= 1000000000000010000
...
void 合成位数并求质数()
{//缘由https://bbs.bccn.net/viewthread.php?tid=499357&pid=2719481&page=1#pid2719481
int shu[100]{0}, xu = 0, ge = 0, wei = 0, he = 0, mu = 1, j = 0;
cin >> ge >> wei;
while (xu<ge)cin >> shu[xu++]; xu = wei;
while (j<ge - 2)if (xu)he += shu[--xu + j] * mu, m...
缘由https://bbs.bccn.net/redirect.php?tid=499353&goto=lastpost#lastpost
直接写未调试
int 数=12340,合=0,计=0;
计=数;
while(计)合=合*10+计%10,计/=10;
cout<<数+合;
缘由https://bbs.bccn.net/redirect.php?tid=499354&goto=lastpost#lastpost
直接写未调试
int 个=0,小=110,大=0,均=0,数=0;
while(1)
{
cin>>数;
if(数==-1)break;
++个;
if(数>大)大=数;
if(数<小)小=数;
均+=数;
}
cout<<小<<"小"<<大<<"大均"<<均/个;
void 数字替换使最大(int 数, int 替)
{//缘由https://bbs.bccn.net/viewthread.php?tid=499343&page=1&extra=#pid2719397
int 取 = 0, 合 = 数, 借 = 0, 幕 = 10;
while (替)if ((借 = 替 % 幕) > 取)取 = 借, 替 /= 幕; else 替 /= 幕;
while (幕 < 数)
if ((借 = (((数 / 幕)*幕) + (取*(幕 / 10)) + (幕>10 ? (数 % (幕 / 1...
void 还原加密数字()
{
int a[30]{0}, aa[30]{0}, n = 0, j = 0, jj = 0, js = 0; bool k = true;
cout << "输入位数和数据:"; cin >> n; while (j < n)cin >> aa[j], a[j] = j++ + 1; --j;
while (j)
{//缘由https://bbs.bccn.net/viewthread.php?tid=499258&page=1&extra=#pid2719048
if (a[jj++] <= n)
...
void 获取2个谷值()
{
double 读数据[3000]{0}, 谷值[3]{0}, 阀值 = 20.0;
char* 文件 = "..\\测试存文件\\data100000.txt";
文件读取(文件, "r", 读数据, 3000);
int 序 = 0, 数序1 = 0, 数序2 = 0, 数序3 = 0, 谷口 = 0;
while (序 < 3000)
{//缘由https://bbs.bccn.net/viewthread.php?tid=499186&page=1&extra=#pid2718585
if (谷值[...
void 黑洞数123(int 整数)
{
int 偶 = 0, 奇 = 0, 位 = 0, 数 = 整数;
while (数 != 123)
{
cout << 数 << "->";
while (数)if (数 % 10 % 2)++奇, ++位, 数 /= 10; else ++偶, ++位, 数 /= 10;
数 = 偶 * 100 + 奇 * 10 + 位;
if (数 < 100)数 *= 10;
偶 = 奇 = 位 = 0;
cout << 数 << ends;
}
cout << endl;
}
int ...
设计一个自动分析黑洞数并添加到判断中的程序,初测运行正常,如百度百科中列出的495,6174都正确自动识别添加到判断队列,以下是程序,欢迎测试,指正。本程序作为分析工具可较易扩展分析功能。
缘由https://bbs.bccn.net/viewthread.php?tid=499134&page=4&extra=#pid2718460
void 寻找黑洞数()
{
int shu = 47, shuan = shu, p = 0, j = 0, cf[44]{0}, 黑洞数[44]{0};
while (shu < INT_M...
int 数重组位最大(int 整数)
{ /*C++任意输入一个整数,再把它的各位数字重新组合一个新的整数,使其值最大*///缘由https://bbs.bccn.net/viewthread.php?tid=499134&pid=2718301&page=1#pid2718301
int 输入整数 = 整数, 数(0), 输出(0), 取值(0), 比较(0), 暂存(0), 位(0), 序(0), 反向(0);
bool 控制(true);
if (输入整数 < 100)输入整数 *= 10;
if (输入整数 > 1000)输入整数 /= 10;...
void 判断密码强弱()
{//缘由https://bbs.bccn.net/thread-499125-1-1.html
char aa[44]{""}; cout << "输入密码必须大于6位的字母数字符号组合:" << ends; cin >> aa;
int a = 0, b = 0, c = 0, j = 0;
while (aa[j] != '\0')
{
if (aa[j] >= '0'&&aa[j] <= '9')++a;
else if (aa[j] >= 'a'&&aa[j] <= 'z' || aa[j...
1审阅题目后决定采用固定数组来处理,动态数组在之后自己去实现
2看2个示例先写一个100的数组并赋值为输入的数量,同时进行初始化后输出,观察程序是否按意图正常运行:
int aa[100]{0},n=0,j=0;
cout << "输入数量" << endl;cin>>n;
while(j<n)aa[j]=1+j++;
j=0;while(aa[j])cout<<aa[j++]<<ends;cout<<endl;
3依据题目条件先写一个报数2剔除的,把凡是报2的数组赋值为0即可
int bs=0;j=0;
while(j<n){if(aa[j])++bs;...
int 返回月的天数(int 年, int 月)
{//缘由https://bbs.csdn.net/topics/395074486
return (月 == 2 ?
((((!(年 % 4) && 年 % 100) || !(年 % 400)) ? 1 : 0) ? 29 : 28) :
(((月 <= 7 && 月 % 2) || (月>7 && !(月 % 2))) ? 31 : 30));
}
int 返回年总天数(int 年)
{
return ((年) ? 365 ...
int 返回日期总天数(int 年, int 月, int 日)
{
int 总天数 = 0;
if (月 == 12 && 日 == 31)总天数 = 返回年总天数(年);
else
{
while (--月)总天数 += 返回月的天数(年, 月);
总天数 += 日 + 返回年总天数(--年);
}
return 总天数;
}
int 日期差天数计算(int 起年, int 起月, int 起日, int 至年, int 至月, int 至日)
{
int 总天数 ...